{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# A Bayesian Network to model the influence of energy consumption on greenhouse gases in Italy\n",
    "\n",
    "### by [Lorenzo Mario Amorosa](https://github.com/Lostefra)\n",
    "#### *Fundamentals of Artificial Intelligence and Knowledge Representation (Mod. 3) - Alma Mater Studiorum Università di Bologna*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Abstract\n",
    "<img src=\"data:image/png;base64, /9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAAyAAD/4QOFaHR0cDov\n",
    "L25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENl\n",
    "aGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4\n",
    "OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6\n",
    "NDc6MTYgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5\n",
    "OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHht\n",
    "bG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0i\n",
    "aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1w\n",
    "PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9\n",
    "InhtcC5kaWQ6ODU4ZDM2MGQtMzc1OS0zZTRjLWJjNWItY2U2MmFjMWIzNTA4IiB4bXBNTTpEb2N1\n",
    "bWVudElEPSJ4bXAuZGlkOkIwM0I5MDQwN0I2MjExRUE5NUEzRjBEN0Y5OEFERDlDIiB4bXBNTTpJ\n",
    "bnN0YW5jZUlEPSJ4bXAuaWlkOkIwM0I5MDNGN0I2MjExRUE5NUEzRjBEN0Y5OEFERDlDIiB4bXA6\n",
    "Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBFbGVtZW50cyAxMy4wIChXaW5kb3dzKSI+IDx4\n",
    "bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFhNzNkYjc4LTI5Zjct\n",
    "ZmY0NS1hNGYwLTdhMDJlYmYxODU2YSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4NThkMzYw\n",
    "ZC0zNzU5LTNlNGMtYmM1Yi1jZTYyYWMxYjM1MDgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRm\n",
    "OlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sA\n",
    "hAAIBgYGBgYIBgYIDAgHCAwOCggICg4QDQ0ODQ0QEQwODQ0ODBEPEhMUExIPGBgaGhgYIyIiIiMn\n",
    "JycnJycnJycnAQkICAkKCQsJCQsOCw0LDhEODg4OERMNDQ4NDRMYEQ8PDw8RGBYXFBQUFxYaGhgY\n",
    "GhohISAhIScnJycnJycnJyf/wAARCASwA/wDASIAAhEBAxEB/8QAxAABAAIDAQEBAAAAAAAAAAAA\n",
    "AAMGBAUHAQIIAQEAAwEBAAAAAAAAAAAAAAAAAQIEAwUQAAEDAwIDBAQICgYGBwYFBQABAgMRBAUS\n",
    "BiExE0FRIgdhcTIUgZGxQlJTFRahwWJysiNzs3Q20YKSM0MIosKDJCU3kzRUZDUmF+Hx0mPTdfBE\n",
    "lLRWo8OEVYURAQACAQIDBwMDAwQCAgIDAAABAhESAyExBEFRYXGRMhOBsSKh0XLBQhThUiMzYoLw\n",
    "8ZJDotI0/9oADAMBAAIRAxEAPwDCBJpQaUPMeOjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQa\n",
    "UAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjB\n",
    "JpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQa\n",
    "UAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjB\n",
    "JpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQa\n",
    "UAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjB\n",
    "JpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQaUAjBJpQa\n",
    "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\n",
    "ad6+gjE8sIxOcY4sbSNJvX7R3ExnUdYuVO5rmOX+y1yqaiSGSF7opWOjkatHMcio5F7lRSZrMc4m\n",
    "PMmto5xMecIdJtMHt+8z00kVq5kbYkR0kkirRK8ERNKKtVoa6ht9v3eatLmVMKxZZXsrLGjNdWtV\n",
    "PEqehVFYjVGYmY8E0iNUaomY8ObEzGGusJee53Stc5WpIx7FVWuaqqiLxRF5opgaTaZu5yd5fvfl\n",
    "kVt0xrWLGrdOltNTU0/1qkLcVkH2nv7baRbSir10auiiLpXj60ExxnTE4LR+U6YnEerB0jSbq22v\n",
    "nruJJoLJ6xuSrVerWVT0JI5qmDe469x0vRvYHQvXiiOTgqd6LyX4BNZiMzEk0tEZmJiPJh6RpPuh\n",
    "m4hcezI27so1zrNHfrUb+CvorzIiMzhERmYjkhtcTkr5NVnayzt7XsY5W/2qUPLrG39iqJeW0sFe\n",
    "DVkYrUX1KqUUvOX3xDZqlngoo3sjRE6zkVI0T6MbG6eRtcDmIN1WFxbX8DOoyjbiJK6HNfXS5teK\n",
    "cu/gdY26TOmLcf0d42duZ0RfNvLg5RpJILS5upOlaxPmkXjojarl+JtTKyVitjkbmxSrujK6Nq9q\n",
    "oi+FfhQ6RG212bt7q9NH3FG6+xZJndle5PkQrTbzM5nEV5qU2tU21TiK85c2ucNlbNnVurOaKPte\n",
    "5jkanrdShhaTpe2t2SZq6fjsjFG18jXOiViLpcicXMc1yu7Cp7rxDMRlnxQJS3mak0Lfoo5VRW/A\n",
    "qC23GnVWcxyL7dYrF6TmM4nPOGg0k7LC8fCtwy3ldCiKqytY5WIic11IlOBt9uZDD46WaTL2i3Wp\n",
    "G9BEYx+lUrqWkjmp3HQ7q8gyG17u8tmKyGW0nWNjkRFREY9tKNVU7CabcWiZ1dnJO3tRaJnVxiM4\n",
    "ce0hGKq0TmfdC7eX2Mt5pLjIzNR8kCtjgRUrpVUq5/r7ilKarRVSlJvaKxwyqzNv5uSPqsx9wrOa\n",
    "L03cfUlKqYMkEsL3RSsdHI3g5j0VrkX0opd7/fmQiyUjLWGP3SF6s0PRdT0atFVXIvD0fjNhu+2t\n",
    "Mpt6PNxs0ysbFIx9KOVkqtbod6lcdJ26zE6ZzNeeV52qTFppaZmvPMObaRpPugocnHCWgoSaRpJW\n",
    "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\n",
    "yi+31+u5PW7UqfiOiX+4cZFY3ElveRPmSN3SY16K5XU8PD1nMtI0iu5Nc+JTctWJiOOUekaSTSNJ\n",
    "RzbLb2Yfhb1ZXIr7eVEZOxOdE5Ob6ULZfWW2Nwq28W7bHNREc9kjWOVOxHsk/oKDpGkvW+I0zGY8\n",
    "XSu5MRpmItHdK/y5fB7bsFtca5s0vFWxsdrq9fnSPTgc/mfJcSvnldqkkcr3uXtVy1U90jSRa82x\n",
    "2RHKIRe82xHKI5RC75/JY+4257tDdRyTaYU6bXIrvCra8PQUTSSaRpF7Tacz3YL3m85nhwwj0m32\n",
    "/m5cJcucrVktpaJNEnPhyc30oazSNJETMTmFazNZiY5w6DdM2ruNqTyTsZNSmtHpFKidzkfzp6UU\n",
    "8srPa233Ldsu2vmRFRr3ypI+i89LI6fIc/0jSdPk450xnvdfm450RnvbLceTizGSW6gYrImsSNur\n",
    "mqNVV1U7OZYslkbCXaDLOO5jdcpb2zVhRyK6rVj1JT0UKXpGkrF5/Kf9ysbk/lPPVGJR6S17V3HF\n",
    "jo1x9+qpbKquhlpXQq82uRPmrzKxpGkrW01nMK0tNZzC73O3dr3svvMN82Fr1q5kUsen+qjq6TT7\n",
    "ig23BbQ2+Jcj7mN3jexVejmrz1v5KteVDQaRpLTeJicViMrWvExMRSIz2t5tfPph5XwXNVs5lRXK\n",
    "nFWP5a0TtqnM399h9sZiVb2O9ZC+RayLHIxEcq9rmP5KUTSNIi+I0zEWjxK7mK6bRFo7MrNmrPa9\n",
    "ljXWtlL1r5HIrJGu6jqotHI9zfCiU7DG2bc21llJZbuVkMa27mo56o1Kq+NacfUaLSNJGr8otERG\n",
    "OxGv8otERGOyGy3PNDdZy6nt5GyxP6el7Fqi0jYi0X1obrZV/ZWMN427uI4Ve5itR7kbWiOrSpU9\n",
    "I0iLTFtXn+pF5i+vHbM+qTIK2S/upGKjmPmkc1yclRXKqKhcMlkbCXaDLOO5jdcpb2zVhRyK6rVj\n",
    "1JT0UKXpGkRaY1f+UYK3mNXD3Rh5CiNmjcq0RHNVV+EuW88hYXthbx2lzHM9s2pzWORyomlyV4FO\n",
    "0jSItMRMd5W0xW1f9zebXzyYaV8FyirZzKiuVOKscnDUidqd5YLzD7Xy8/v6XjY3PWsvTlY1Hr+U\n",
    "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\n",
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n",
    "AAAAAAAAKxvvedtsXBrmrm2fdosrYWQRuRiqr+3UqLSlCznJ/wDMJ/IzP4uL8YGVsXzpw+9Mv9ir\n",
    "YyY65e1XW6ySNkbIrebao1tFOgZrJx4XE3mWlYsrLOJ0zo2rRXI1K0RT8guxN9tXH7a33jFckc76\n",
    "q7mjZ4V8SL3I5OR+l8xmrfcXlle5m1WsV5jnyU7UVW+Jq+lFA+PLvzJtfMKO+fb2Elitk5iOSSRJ\n",
    "NSPRaKita2nI0rfO7Du3h91Ps6ZG+8rae/a0prRdNelprSvpKr/lq/us9+dB8jjMh3hsZPNH7Kbt\n",
    "Vjcst86BcxrSvW5LL09P4wOx5PMYrDQtuMteRWcL3aGyTvRiK7uRXEtlfWeStmXlhOy5tpOMc0Tk\n",
    "cx3qVD86+fO948ncu2gli+J+NuEkW8c+qPqzk1mlKc+8y/Krzahxtlh9lriZJHOkWH31svh/WOrq\n",
    "0aOz1gfocHOt7ebNlsvcNlgriwdOlyjHS3XVSNsTXu01VFa6tE4qaz/13wU+6YdvY+ykuraaZtu3\n",
    "ItejWq5y6dTWaVVW17agdYBT96+ZG3NjsazJyulvZW6orOFNT1Tvd9FDnsH+ZLGuna25wU8Nuq0W\n",
    "ZJmuVE79OhPlA7kDTbZ3Thd3Y1uUwk/Wgrpe1yaXxu+jI3sUpWD84rXN70ds9mKkickssKXayoqV\n",
    "irx0aE507wOnArG/N4w7GwLs3NauvESRkTYGuRiqr1pXUqO5eoh2DvmDfODlzTLVbBkMr4nxvej6\n",
    "aER2rUiN4UUC2g47nv8AMJt/GXr7PFY+bKJE5WPmR6RMq1aLpq16qhavL7zLxu/23Mdtay2d1aI1\n",
    "00Mio5NLloio9ET5ALwY2QyNjirSS/yM7La1hTVJNIulqIZJ+dP8xG5rmbJ2W04Hq2CJjbm4YnJ7\n",
    "5OEdfUlQLRl/8xO2LKZYsZYXGSai0WTUkLV9KakcS4P/ADCbVyMzYcpaz4tXLpbI9UlZxX5ytRtE\n",
    "+A3/AJZbBwu29uWcrrSOXJXkTJru4laj3anJq0NqnBrala88ti4m423NuSxtY7fIWLmvnljbp6kS\n",
    "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\n",
    "clH1snFcxrJc28q27YVjiRr0a50zNOhHpzVOC9oXPL7vxGImtLVWz313fRuuLa1sIXXMroGIium0\n",
    "x8mcea8+w+J977cg27Buf3l0uOuXNitkije+aSZ7umluyFqa+rrRWq2lUotSn4bbuXx0W2M3j8hZ\n",
    "2WYt9uw42/x+SRzkW3jRs6SJ03sc1YpF8XZ2VQrmF1wYfauWyUqS4+Xdt1ce96VZE5J/eI4LhGrw\n",
    "Yx0vFq1olQOu4Dc2N3G27SySaK4sJfd72zuonQzwyU1NR8b+xzVqipwUZzcthgX2tvcRXN1d3quS\n",
    "1s7KB88r0jp1H6WJRrW6kqrlQqdnPfv37vC725bw3c0NtjLaZs8joYH3Deq57VmZHN4o4npVEb3I\n",
    "pvMnuqXbmDZkdyW0UWVmesFljLKVbh1xM5aRRQvfHE5Vdw1Lpo0CaDfG3Jtu3G6FuXQ420c+K660\n",
    "b2TRTMckboHwuTWkmtUajacaoS4HdmM3BPdWdtHcWt9ZtjkuLK9hdbzJHMirHIjX82upzQ51lsJL\n",
    "gNhx3eUliddXe4LXO7jWJaxRuubqN0rE4uRGxppbWtOFSzRyxXXm66WyVHstdv6MhMxUVlZbtJLe\n",
    "NyovtaWvcnDkBv8AA7uwm5LvI2OKklfPi1iS8bNBLAreujnR0SdrHLVGL2GC7zD262+90VblYPe0\n",
    "xy5NLeRbJLtXaOgtxTTXV4a8q9pp9ozQr5neYdJGrr+xdFFTxUs31p3lFfJeM203dsN0121LjPNv\n",
    "bjaiIvvLHe96EjZMqOk1rOiTPh0p3ItK1DvoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n",
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMthMPnrdL\n",
    "TM2MF/A1dTY7iNsiI76TdScF9RBabX25YY6fEWWKtYMfdV95tY4mNjlqlF6rUTx8OHE2wAxLzF47\n",
    "I2LsZf2sVzYvajHW0rEfGrW+ymlyU4U4GPituYHB201niMbb2dvccbiKGJrWycNP6yieLgtOJswB\n",
    "pcXtHa+EnlucRiLSynmarJJIIWscrV5tqicEXuQykwWGbZW2NSwgSys3sltLZI29OJ8btbHxtpRq\n",
    "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\n",
    "AAAAAAAAAAAf/9k=\" float=\"right\" height=\"33%\" width=\"33%\" align=\"right\" style=\"margin-left: 24px\"/>\n",
    "Nowadays it is well established that **global warming** is hugely caused by greenhouse gases, which are indeed responsible for trapping heat in the atmosphere. The 3 most common gases are carbon dioxide (**CO**<sub><b>2</b></sub>), methane (**CH**<sub><b>4</b></sub>) and nitrous oxide (**N**<sub><b>2</b></sub>**O**) [[1]](#first).\n",
    "\n",
    "There are several sources of greenhouse gases, such as transportation, industry, commercial and residental. In this document I will tackle the problem in a general way, considering the impact of energy consumption on greenhouse gases emissions. Energy is indeed strictly related to almost all source factors. In particular, I will face the modelling of **causal relations** between **energy consumption and greenhouse gases in Italy** using a **Bayesian network**. The aim is to learn a model that can provide **probabilistic results given** some input **evidence**. The causal relations and their relative probabilities will be estimated by analyzing **annual growth factors** of several indicators from open source datasets of the World Bank Group (WBG) [[3]](#third). The choice of analyzing the annual growth aims to capture how the variation of an indicator can affect the others.\n",
    "\n",
    "This work starts from a paper by Cinar and Kayakutlu (2010) [[2]](#second) in which the authors produced estimates about energy investments in Turkey given historical data. Their work helped me to come up with interesting measures to be investigated and to be represented in the Bayesian network. I could extend their work adding: a more comprehensive analysis of network properties (**conditional independencies, active trails, Markov blankets**), concise and effective high level functions (such as `query_report`, `check_assertion` and `active_trails_of`) to express the most significant properties in a readable format and the whole code **to learn the Bayesian network** from the available datasets."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Network definition\n",
    "\n",
    "Generally we can expect that the increase of fossil fuel consumption determines the growth of greenhouse gases diffusion, whereas a wider use of renewable energies leads to a reduction of greenhouse gases emissions. In [[2]](#second) it is suggested that growth rate factors about population, urbanization and gross domestic product (GDP) can all influence the overall energy use in a nation. Given these assumptions, the Bayesian network is defined as follows: \n",
    "<img src=\"data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAS0AAAFBCAYAAAAi1fnPAAAGB3RFWHRteGZpbGUAJTNDbXhmaWxl\n",
    "JTIwaG9zdCUzRCUyMmFwcC5kaWFncmFtcy5uZXQlMjIlMjBtb2RpZmllZCUzRCUyMjIwMjAtMDct\n",
    "MDNUMTklM0E0NCUzQTAwLjMyM1olMjIlMjBhZ2VudCUzRCUyMjUuMCUyMChYMTEpJTIyJTIwZXRh\n",
    "ZyUzRCUyMmZDYXdnZE1YYmMwN2xtWmw1Q0JwJTIyJTIwdmVyc2lvbiUzRCUyMjEzLjMuNiUyMiUy\n",
    "MHR5cGUlM0QlMjJnb29nbGUlMjIlM0UlM0NkaWFncmFtJTIwaWQlM0QlMjItUUVyV1lsRFc4eHgx\n",
    "WGdNVWdTTCUyMiUyMG5hbWUlM0QlMjJuZXQlMjIlM0U3VnBiYzZJd0ZQNDFQcllEQVVRZlc3eTBN\n",
    "MjExNm01WCUyQjdLVFNoUzZrVGd4Q3U2djN5aUpJRmhhcSUyQlV5M1JlSGMwaEN6dVg3emdsWTA2\n",
    "eFowS1Z3N3R3VEclMkJFYVVPeWdwclZxQURSVWxmOXVGT3RRb1d0R3FKaFMxdzVWYXFRWXVIJTJC\n",
    "UlVDcEN1M1J0dE5nYnlBakJ6SjN2SzhmRTg5Q1k3ZWtncGNUZkh6WWhlUCUyQnBjemhGS2NWZ0RI\n",
    "RmElMkI4dTFtU1BNQW1ha3YwSHUxSkZQVnV2TjhNNE15c0hDa29VRGJlTEhWRnE3cGxtVUVCWmV6\n",
    "UUlMNFkzdnBGJTJCYSUyQnVpbWpXZVRXJTJCdlBxdlB3VEN6RE55JTJGQ3hUckhUTm1aUUpISFBy\n",
    "MjBwd3lzb1RreGVsZHQ0THZQN2FlZmdNbWxGMnd0JTJGWVZzN2o0aGNoT3ZLVmw2TnRxc29YQ0pV\n",
    "T2FRS2ZFZ3ZpTmt6cFVxVjc0aXh0WWk4bkRKQ0ZjNWJJYkZYUlM0YkJpN0hzV3VXNEZZZHl1c3Bl\n",
    "QXh1aDdHaFZGY2lDWnRKVG5yZzA2U0ZwTWxIUXVUSCUyRlVyNjNuWXV3cCUyQkRPYndMdkNmVmwx\n",
    "WE9GTmhrRTZSV00lMkI1dDE4bjFnSSUyRnFPcklhQXg5OXZ1bGRhR0Y0elp1aXlXY0NFRVhrUm5p\n",
    "bSUyQlFES01LUXVhdjlySVFpdWFlN2NWRUElMkJZV0k0ZUY0WnUxNkJmRlNQS25QdzVTS01jWWNm\n",
    "bHk0OWgyWElUNSUyRjZ3cWZFOEIlMkI3Q1l1eGhiQmhHN25hVFpFamNuNGFGJTJCdkVHVW95UFNP\n",
    "dktzTEF3VFpHRUwwWThnVktpY0dXam5zRkhjZWhBZklEeDdLcGZFSmdJU1R2aDRpQjFPJTJGOUJE\n",
    "SjJuVU1JaiUyRnBTM1Vnc2t0MkFSR3RZSWhvT1VMa2VJQ29CY0pEZGp2VmdvZE15QWdlM1ZhJTJG\n",
    "T3ZEUTZ1V3FJSTJVNjc0ckhMUTBIQTU2ekN3S0RnZDMwOHlrTjQ5NDZKczNBUjhOcTFHcXNNclRh\n",
    "VTV4TGUlMkZaNTZTWTFzOGRVekcxVDF4dXg1dWNyallUYkIxdVZNeEtaTVp1RzU4dmlWcXFKTGF0\n",
    "NmxURVpNT29LbzFpUzZKYXo1ZFRTMXNtczNqeVhleXBlcmtJTmQzb2ZOOUNlVnBnUWJrQ20yOEhW\n",
    "TjVLZVZwUUN6dmtaVzA3VnRFNm5TclhOS0FVZk15cnAxdUUyJTJCcTQ4ODBHcTdBV3dmaGZUYktK\n",
    "eDZ4b20yRG1FOWhQMVlZb0hVd1FUd2psc3FtYjJVbkJoVDZpTG5jU29rTDN1cHpOcFYyUUhnJTJG\n",
    "Zjg2WEEyUnVLdzhjMElBOFdrcFNUOUJCYWRJNWpXcFklMkZZaHo4V0tXYWx2ejJWVHdKZzVSRHJS\n",
    "dTlPZzVOZnlrcCUyQm10aVRpJTJCZERwTmZWSzdlb2IlMkJQdCUyQkRsb2JpenQ5ZHZVSnlXNkR0\n",
    "enBqZzElMkZTcnFBZlNxQThsa293a0s1emc5elhFOVVCMkhKb3ZHRnpxVWk5RiUyRm5jS0VqdjR3\n",
    "cHJYJTJGQVElM0QlM0QlM0MlMkZkaWFncmFtJTNFJTNDJTJGbXhmaWxlJTNFsCsyTQAAIABJREFU\n",
    "eJztnXtcTPn/xydNzdSkJGlzTVKJlnUrpUK5VihRSSoRYtll17qtUMS6RKVCrbIr97VuyV3JnXRX\n",
    "uRQtzZcsu1i39vv6/eHXfKXbTM3M55yZz/PxeP/RmZlz3ufzeb9fnTnz/rwPBxSKmLx58waZmZlI\n",
    "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\" height=\"30%\" width=\"30%\" align=\"center\">\n",
    "The terms in the nodes have the following labels in [[3]](#third):\n",
    "\n",
    "<code style=\"background-color:white;\">\n",
    "Pop  = <a href=\"https://data.worldbank.org/indicator/SP.POP.GROW?locations=IT\">Population growth (annual %)</a>\n",
    "    \n",
    "Urb  = <a href=\"https://data.worldbank.org/indicator/SP.URB.GROW?locations=IT\">Urban population growth (annual %)</a>\n",
    "\n",
    "GDP  = <a href=\"https://data.worldbank.org/indicator/NY.GDP.PCAP.KD.ZG?locations=IT\">GDP per capita growth (annual %)</a>\n",
    "\n",
    "EC   = <a href=\"https://data.worldbank.org/indicator/EG.USE.PCAP.KG.OE?locations=IT\">Energy use (kg of oil equivalent per capita)</a> - [annual growth %]\n",
    "\n",
    "FFEC = <a href=\"https://data.worldbank.org/indicator/EG.USE.COMM.FO.ZS?locations=IT\">Fossil fuel energy consumption (% of total)</a> - [annual growth %]\n",
    "\n",
    "REC  = <a href=\"https://data.worldbank.org/indicator/EG.FEC.RNEW.ZS?locations=IT\">Renewable energy consumption (% of total final energy consumption)</a> - [annual growth %]\n",
    "\n",
    "EI   = <a href=\"https://data.worldbank.org/indicator/EG.IMP.CONS.ZS?locations=IT\">Energy imports, net (% of energy use)</a> - [annual growth %]\n",
    "\n",
    "CO2  = <a href=\"https://data.worldbank.org/indicator/EN.ATM.CO2E.PC?locations=IT\">CO2 emissions (metric tons per capita)</a> - [annual growth %]\n",
    "\n",
    "CH4  = <a href=\"https://data.worldbank.org/indicator/EN.ATM.METH.EG.KT.CE?locations=IT\">Methane emissions in energy sector (thousand metric tons of CO2 equivalent)</a> - [annual growth %]\n",
    "\n",
    "N2O  = <a href=\"https://data.worldbank.org/indicator/EN.ATM.NOXE.EG.KT.CE?locations=IT\">Nitrous oxide emissions in energy sector (thousand metric tons of CO2 equivalent)</a> - [annual growth %]\n",
    "</code>\n",
    "    \n",
    "The Bayesian network proposed differs from the one of [[2]](#second) because here greenhouse gases are kept distinct (CO<sub>2</sub>, CH<sub>4</sub>, N<sub>2</sub>O) and energy investments are not represented. \n",
    "\n",
    "In the following cell the Bayesian network is created using the pgmpy library."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pgmpy.models import BayesianModel\n",
    "\n",
    "model = BayesianModel([('Pop', 'EC'),   ('Urb', 'EC'),   ('GDP', 'EC'),\n",
    "                       ('EC', 'FFEC'),  ('EC', 'REC'),   ('EC', 'EI'),\n",
    "                       ('REC', 'CO2'),  ('REC', 'CH4'),  ('REC', 'N2O'),\n",
    "                       ('FFEC', 'CO2'), ('FFEC', 'CH4'), ('FFEC', 'N2O')])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Datasets\n",
    "The **data** to compute the conditional probability tables (CPT) of the network are retrived from [[3]](#third). Some data are given there in absolute values and not in terms of **annual growth**, hence it is necessary to transform them properly (the labels of transformed data are marked with the trailing string \"*- [annual growth %]*\"). \n",
    "\n",
    "A good methodology to organize **historical data to infer CPT**, as shown also in [[2]](#second), is to **group** them **by year**, such that historical values of the same year are treated as a single tuple and thus they constitute a whole entry of the dataset. **Data discretization** is also needed, [since pgmpy does not support learning from continuous variables](https://github.com/pgmpy/pgmpy/issues/1084), and so all values are mapped into 3 fixed tiers. In order to minimize data sparsity, the boundaries of the mapping intervals are chosen such that each tier of the same node contains an equal number of samples.\n",
    "\n",
    "The pgmpy learning algorithms expect as input a dataframe in which each entry represents an *observed event* — a year in this case. As a consequence some **data preprocessing** is needed to make the raw data compatible with the required signature. It is worth noting that pgmpy handles learning task with **sparse datasets** (i.e. [it handles NaN values](https://pgmpy.org/estimators.html)). To compute indeed the CPT for a given node in the network there are used only those entries in which both the node itself and its parents are defined (i.e. an entry is used to compute a given CPT only if all needed values of that year are defined). This fact implies that the deeper the network is, the less sparse the dataset should be to compute significant CPT. \n",
    "\n",
    "As a side note, mind the fact that industrialization growth, which is expressed by indicators such as [industry value added](https://data.worldbank.org/indicator/NV.IND.TOTL.KD.ZG?locations=IT&view=chart), is not represented in the newtork. Data regarding industrialization are available only for a short year range in [[3]](#third) and the industrialization node would be on top of the network hierarchy, being a parent of the node 'EC'. As a consequence, if industrialization would be represented, then the overall learning process could rely only on a small subset of all the available data and the network parameters would be estimated less significantly.\n",
    "\n",
    "In the following cells data are imported and preprocessed."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Raw data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "There are 10 indicators in the dataframe.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Country Name</th>\n",
       "      <th>Country Code</th>\n",
       "      <th>Indicator Name</th>\n",
       "      <th>Indicator Code</th>\n",
       "      <th>1960</th>\n",
       "      <th>1961</th>\n",
       "      <th>1962</th>\n",
       "      <th>1963</th>\n",
       "      <th>1964</th>\n",
       "      <th>1965</th>\n",
       "      <th>...</th>\n",
       "      <th>2010</th>\n",
       "      <th>2011</th>\n",
       "      <th>2012</th>\n",
       "      <th>2013</th>\n",
       "      <th>2014</th>\n",
       "      <th>2015</th>\n",
       "      <th>2016</th>\n",
       "      <th>2017</th>\n",
       "      <th>2018</th>\n",
       "      <th>2019</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Italy</td>\n",
       "      <td>ITA</td>\n",
       "      <td>Population growth (annual %)</td>\n",
       "      <td>SP.POP.GROW</td>\n",
       "      <td>1.993928</td>\n",
       "      <td>0.668383</td>\n",
       "      <td>0.676623</td>\n",
       "      <td>0.729553</td>\n",
       "      <td>0.822624</td>\n",
       "      <td>0.842109</td>\n",
       "      <td>...</td>\n",
       "      <td>0.307591</td>\n",
       "      <td>0.171978</td>\n",
       "      <td>0.269541</td>\n",
       "      <td>1.159251</td>\n",
       "      <td>0.917504</td>\n",
       "      <td>-0.096376</td>\n",
       "      <td>-0.169884</td>\n",
       "      <td>-0.149861</td>\n",
       "      <td>-0.190064</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Italy</td>\n",
       "      <td>ITA</td>\n",
       "      <td>Urban population growth (annual %)</td>\n",
       "      <td>SP.URB.GROW</td>\n",
       "      <td>2.836401</td>\n",
       "      <td>1.498807</td>\n",
       "      <td>1.506833</td>\n",
       "      <td>1.551287</td>\n",
       "      <td>1.636027</td>\n",
       "      <td>1.642485</td>\n",
       "      <td>...</td>\n",
       "      <td>0.480439</td>\n",
       "      <td>0.343066</td>\n",
       "      <td>0.619579</td>\n",
       "      <td>1.587835</td>\n",
       "      <td>1.341371</td>\n",
       "      <td>0.325701</td>\n",
       "      <td>0.246127</td>\n",
       "      <td>0.262999</td>\n",
       "      <td>0.228198</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Italy</td>\n",
       "      <td>ITA</td>\n",
       "      <td>GDP per capita growth (annual %)</td>\n",
       "      <td>NY.GDP.PCAP.KD.ZG</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7.486419</td>\n",
       "      <td>5.487478</td>\n",
       "      <td>4.842052</td>\n",
       "      <td>1.955533</td>\n",
       "      <td>2.402046</td>\n",
       "      <td>...</td>\n",
       "      <td>1.400915</td>\n",
       "      <td>0.534287</td>\n",
       "      <td>-3.242060</td>\n",
       "      <td>-2.972404</td>\n",
       "      <td>-0.917814</td>\n",
       "      <td>0.875477</td>\n",
       "      <td>1.451875</td>\n",
       "      <td>1.868715</td>\n",
       "      <td>0.966058</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Italy</td>\n",
       "      <td>ITA</td>\n",
       "      <td>Energy use (kg of oil equivalent per capita) -...</td>\n",
       "      <td>EG.USE.PCAP.KG.OE</td>\n",
       "      <td>NaN</td>\n",
       "      <td>12.062200</td>\n",
       "      <td>13.064053</td>\n",
       "      <td>11.188621</td>\n",
       "      <td>9.110076</td>\n",
       "      <td>7.753922</td>\n",
       "      <td>...</td>\n",
       "      <td>2.113919</td>\n",
       "      <td>-3.486796</td>\n",
       "      <td>-4.211107</td>\n",
       "      <td>-4.791839</td>\n",
       "      <td>-6.396212</td>\n",
       "      <td>2.786129</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Italy</td>\n",
       "      <td>ITA</td>\n",
       "      <td>Fossil fuel energy consumption (% of total) - ...</td>\n",
       "      <td>EG.USE.COMM.FO.ZS</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.344018</td>\n",
       "      <td>1.933224</td>\n",
       "      <td>-0.167728</td>\n",
       "      <td>1.075163</td>\n",
       "      <td>-0.074481</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.262284</td>\n",
       "      <td>-0.193760</td>\n",
       "      <td>-2.679745</td>\n",
       "      <td>-2.721392</td>\n",
       "      <td>-1.723158</td>\n",
       "      <td>1.733165</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 64 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "  Country Name Country Code  \\\n",
       "0        Italy          ITA   \n",
       "1        Italy          ITA   \n",
       "2        Italy          ITA   \n",
       "3        Italy          ITA   \n",
       "4        Italy          ITA   \n",
       "\n",
       "                                      Indicator Name     Indicator Code  \\\n",
       "0                       Population growth (annual %)        SP.POP.GROW   \n",
       "1                 Urban population growth (annual %)        SP.URB.GROW   \n",
       "2                   GDP per capita growth (annual %)  NY.GDP.PCAP.KD.ZG   \n",
       "3  Energy use (kg of oil equivalent per capita) -...  EG.USE.PCAP.KG.OE   \n",
       "4  Fossil fuel energy consumption (% of total) - ...  EG.USE.COMM.FO.ZS   \n",
       "\n",
       "       1960       1961       1962       1963      1964      1965  ...  \\\n",
       "0  1.993928   0.668383   0.676623   0.729553  0.822624  0.842109  ...   \n",
       "1  2.836401   1.498807   1.506833   1.551287  1.636027  1.642485  ...   \n",
       "2       NaN   7.486419   5.487478   4.842052  1.955533  2.402046  ...   \n",
       "3       NaN  12.062200  13.064053  11.188621  9.110076  7.753922  ...   \n",
       "4       NaN   2.344018   1.933224  -0.167728  1.075163 -0.074481  ...   \n",
       "\n",
       "       2010      2011      2012      2013      2014      2015      2016  \\\n",
       "0  0.307591  0.171978  0.269541  1.159251  0.917504 -0.096376 -0.169884   \n",
       "1  0.480439  0.343066  0.619579  1.587835  1.341371  0.325701  0.246127   \n",
       "2  1.400915  0.534287 -3.242060 -2.972404 -0.917814  0.875477  1.451875   \n",
       "3  2.113919 -3.486796 -4.211107 -4.791839 -6.396212  2.786129       NaN   \n",
       "4 -0.262284 -0.193760 -2.679745 -2.721392 -1.723158  1.733165       NaN   \n",
       "\n",
       "       2017      2018  2019  \n",
       "0 -0.149861 -0.190064   NaN  \n",
       "1  0.262999  0.228198   NaN  \n",
       "2  1.868715  0.966058   NaN  \n",
       "3       NaN       NaN   NaN  \n",
       "4       NaN       NaN   NaN  \n",
       "\n",
       "[5 rows x 64 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pandas import read_csv, DataFrame\n",
    "import numpy as np\n",
    "\n",
    "def annual_growth(row, years):\n",
    "    min_year = years[\"min\"]\n",
    "    max_year = years[\"max\"]\n",
    "    row[\"Indicator Name\"] = row[\"Indicator Name\"] + \" - [annual growth %]\"\n",
    "    for year in range(max_year, min_year, -1):\n",
    "        if not np.isnan(row[str(year)]) and not np.isnan(row[str(year - 1)]):\n",
    "            row[str(year)] = 100 * (float(row[str(year)]) - float(row[str(year - 1)])) / abs(float(row[str(year - 1)]))\n",
    "        else:\n",
    "            row[str(year)] = np.nan     \n",
    "    row[str(min_year)] = np.nan\n",
    "    return row\n",
    "\n",
    "years = {\"min\" : 1960, \"max\" : 2019}\n",
    "df_raw = read_csv(\"../csv/italy-raw-data.csv\")\n",
    "df_raw_growth = DataFrame(data=[row if \"growth\" in row[\"Indicator Name\"] else annual_growth(row, years) for index, row in df_raw.iterrows()])\n",
    "print(\"There are \" + str(df_raw_growth.shape[0]) + \" indicators in the dataframe.\")\n",
    "df_raw_growth.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Data cleaning"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pop</th>\n",
       "      <th>Urb</th>\n",
       "      <th>GDP</th>\n",
       "      <th>EC</th>\n",
       "      <th>FFEC</th>\n",
       "      <th>REC</th>\n",
       "      <th>EI</th>\n",
       "      <th>CO2</th>\n",
       "      <th>CH4</th>\n",
       "      <th>N2O</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1960</th>\n",
       "      <td>1.99393</td>\n",
       "      <td>2.8364</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1961</th>\n",
       "      <td>0.668383</td>\n",
       "      <td>1.49881</td>\n",
       "      <td>7.48642</td>\n",
       "      <td>12.0622</td>\n",
       "      <td>2.34402</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.07261</td>\n",
       "      <td>13.8924</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1962</th>\n",
       "      <td>0.676623</td>\n",
       "      <td>1.50683</td>\n",
       "      <td>5.48748</td>\n",
       "      <td>13.0641</td>\n",
       "      <td>1.93322</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.75395</td>\n",
       "      <td>17.5887</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1963</th>\n",
       "      <td>0.729553</td>\n",
       "      <td>1.55129</td>\n",
       "      <td>4.84205</td>\n",
       "      <td>11.1886</td>\n",
       "      <td>-0.167728</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.51943</td>\n",
       "      <td>12.5116</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1964</th>\n",
       "      <td>0.822624</td>\n",
       "      <td>1.63603</td>\n",
       "      <td>1.95553</td>\n",
       "      <td>9.11008</td>\n",
       "      <td>1.07516</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.631028</td>\n",
       "      <td>6.78298</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1965</th>\n",
       "      <td>0.842109</td>\n",
       "      <td>1.64248</td>\n",
       "      <td>2.40205</td>\n",
       "      <td>7.75392</td>\n",
       "      <td>-0.0744814</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.33506</td>\n",
       "      <td>7.84845</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1966</th>\n",
       "      <td>0.777304</td>\n",
       "      <td>1.56811</td>\n",
       "      <td>5.16416</td>\n",
       "      <td>8.70603</td>\n",
       "      <td>0.552096</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.51847</td>\n",
       "      <td>12.9005</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1967</th>\n",
       "      <td>0.723778</td>\n",
       "      <td>1.50361</td>\n",
       "      <td>6.40568</td>\n",
       "      <td>8.41638</td>\n",
       "      <td>1.19174</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.938</td>\n",
       "      <td>9.41875</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1968</th>\n",
       "      <td>0.631737</td>\n",
       "      <td>1.40395</td>\n",
       "      <td>5.87359</td>\n",
       "      <td>9.46868</td>\n",
       "      <td>0.880322</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.59627</td>\n",
       "      <td>6.42744</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1969</th>\n",
       "      <td>0.566059</td>\n",
       "      <td>1.32609</td>\n",
       "      <td>5.49918</td>\n",
       "      <td>7.89391</td>\n",
       "      <td>0.940778</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.725698</td>\n",
       "      <td>8.22188</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Pop      Urb      GDP       EC       FFEC  REC        EI      CO2  \\\n",
       "1960   1.99393   2.8364      NaN      NaN        NaN  NaN       NaN      NaN   \n",
       "1961  0.668383  1.49881  7.48642  12.0622    2.34402  NaN   5.07261  13.8924   \n",
       "1962  0.676623  1.50683  5.48748  13.0641    1.93322  NaN   5.75395  17.5887   \n",
       "1963  0.729553  1.55129  4.84205  11.1886  -0.167728  NaN   2.51943  12.5116   \n",
       "1964  0.822624  1.63603  1.95553  9.11008    1.07516  NaN  0.631028  6.78298   \n",
       "1965  0.842109  1.64248  2.40205  7.75392 -0.0744814  NaN   2.33506  7.84845   \n",
       "1966  0.777304  1.56811  5.16416  8.70603   0.552096  NaN   1.51847  12.9005   \n",
       "1967  0.723778  1.50361  6.40568  8.41638    1.19174  NaN     1.938  9.41875   \n",
       "1968  0.631737  1.40395  5.87359  9.46868   0.880322  NaN   1.59627  6.42744   \n",
       "1969  0.566059  1.32609  5.49918  7.89391   0.940778  NaN  0.725698  8.22188   \n",
       "\n",
       "      CH4  N2O  \n",
       "1960  NaN  NaN  \n",
       "1961  NaN  NaN  \n",
       "1962  NaN  NaN  \n",
       "1963  NaN  NaN  \n",
       "1964  NaN  NaN  \n",
       "1965  NaN  NaN  \n",
       "1966  NaN  NaN  \n",
       "1967  NaN  NaN  \n",
       "1968  NaN  NaN  \n",
       "1969  NaN  NaN  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nodes = ['Pop', 'Urb', 'GDP', 'EC', 'FFEC', 'REC', 'EI', 'CO2', 'CH4', 'N2O']\n",
    "df_growth = df_raw_growth.transpose().iloc[4:]\n",
    "df_growth.columns = nodes\n",
    "df_growth.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Data discretization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pop</th>\n",
       "      <th>Urb</th>\n",
       "      <th>GDP</th>\n",
       "      <th>EC</th>\n",
       "      <th>FFEC</th>\n",
       "      <th>REC</th>\n",
       "      <th>EI</th>\n",
       "      <th>CO2</th>\n",
       "      <th>CH4</th>\n",
       "      <th>N2O</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1960</th>\n",
       "      <td>C: +0.50 to +1.99</td>\n",
       "      <td>C: +0.82 to +2.84</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1961</th>\n",
       "      <td>C: +0.50 to +1.99</td>\n",
       "      <td>C: +0.82 to +2.84</td>\n",
       "      <td>C: +2.89 to +7.49</td>\n",
       "      <td>C: +2.79 to +13.06</td>\n",
       "      <td>C: +0.16 to +2.34</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C: +0.78 to +5.75</td>\n",
       "      <td>C: +3.81 to +17.59</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1962</th>\n",
       "      <td>C: +0.50 to +1.99</td>\n",
       "      <td>C: +0.82 to +2.84</td>\n",
       "      <td>C: +2.89 to +7.49</td>\n",
       "      <td>C: +2.79 to +13.06</td>\n",
       "      <td>C: +0.16 to +2.34</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C: +0.78 to +5.75</td>\n",
       "      <td>C: +3.81 to +17.59</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1963</th>\n",
       "      <td>C: +0.50 to +1.99</td>\n",
       "      <td>C: +0.82 to +2.84</td>\n",
       "      <td>C: +2.89 to +7.49</td>\n",
       "      <td>C: +2.79 to +13.06</td>\n",
       "      <td>B: -0.40 to +0.16</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C: +0.78 to +5.75</td>\n",
       "      <td>C: +3.81 to +17.59</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1964</th>\n",
       "      <td>C: +0.50 to +1.99</td>\n",
       "      <td>C: +0.82 to +2.84</td>\n",
       "      <td>B: +1.24 to +2.89</td>\n",
       "      <td>C: +2.79 to +13.06</td>\n",
       "      <td>C: +0.16 to +2.34</td>\n",
       "      <td>NaN</td>\n",
       "      <td>B: -0.38 to +0.78</td>\n",
       "      <td>C: +3.81 to +17.59</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1965</th>\n",
       "      <td>C: +0.50 to +1.99</td>\n",
       "      <td>C: +0.82 to +2.84</td>\n",
       "      <td>B: +1.24 to +2.89</td>\n",
       "      <td>C: +2.79 to +13.06</td>\n",
       "      <td>B: -0.40 to +0.16</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C: +0.78 to +5.75</td>\n",
       "      <td>C: +3.81 to +17.59</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1966</th>\n",
       "      <td>C: +0.50 to +1.99</td>\n",
       "      <td>C: +0.82 to +2.84</td>\n",
       "      <td>C: +2.89 to +7.49</td>\n",
       "      <td>C: +2.79 to +13.06</td>\n",
       "      <td>C: +0.16 to +2.34</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C: +0.78 to +5.75</td>\n",
       "      <td>C: +3.81 to +17.59</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1967</th>\n",
       "      <td>C: +0.50 to +1.99</td>\n",
       "      <td>C: +0.82 to +2.84</td>\n",
       "      <td>C: +2.89 to +7.49</td>\n",
       "      <td>C: +2.79 to +13.06</td>\n",
       "      <td>C: +0.16 to +2.34</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C: +0.78 to +5.75</td>\n",
       "      <td>C: +3.81 to +17.59</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1968</th>\n",
       "      <td>C: +0.50 to +1.99</td>\n",
       "      <td>C: +0.82 to +2.84</td>\n",
       "      <td>C: +2.89 to +7.49</td>\n",
       "      <td>C: +2.79 to +13.06</td>\n",
       "      <td>C: +0.16 to +2.34</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C: +0.78 to +5.75</td>\n",
       "      <td>C: +3.81 to +17.59</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1969</th>\n",
       "      <td>C: +0.50 to +1.99</td>\n",
       "      <td>C: +0.82 to +2.84</td>\n",
       "      <td>C: +2.89 to +7.49</td>\n",
       "      <td>C: +2.79 to +13.06</td>\n",
       "      <td>C: +0.16 to +2.34</td>\n",
       "      <td>NaN</td>\n",
       "      <td>B: -0.38 to +0.78</td>\n",
       "      <td>C: +3.81 to +17.59</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    Pop                Urb                GDP  \\\n",
       "1960  C: +0.50 to +1.99  C: +0.82 to +2.84                NaN   \n",
       "1961  C: +0.50 to +1.99  C: +0.82 to +2.84  C: +2.89 to +7.49   \n",
       "1962  C: +0.50 to +1.99  C: +0.82 to +2.84  C: +2.89 to +7.49   \n",
       "1963  C: +0.50 to +1.99  C: +0.82 to +2.84  C: +2.89 to +7.49   \n",
       "1964  C: +0.50 to +1.99  C: +0.82 to +2.84  B: +1.24 to +2.89   \n",
       "1965  C: +0.50 to +1.99  C: +0.82 to +2.84  B: +1.24 to +2.89   \n",
       "1966  C: +0.50 to +1.99  C: +0.82 to +2.84  C: +2.89 to +7.49   \n",
       "1967  C: +0.50 to +1.99  C: +0.82 to +2.84  C: +2.89 to +7.49   \n",
       "1968  C: +0.50 to +1.99  C: +0.82 to +2.84  C: +2.89 to +7.49   \n",
       "1969  C: +0.50 to +1.99  C: +0.82 to +2.84  C: +2.89 to +7.49   \n",
       "\n",
       "                      EC               FFEC  REC                 EI  \\\n",
       "1960                 NaN                NaN  NaN                NaN   \n",
       "1961  C: +2.79 to +13.06  C: +0.16 to +2.34  NaN  C: +0.78 to +5.75   \n",
       "1962  C: +2.79 to +13.06  C: +0.16 to +2.34  NaN  C: +0.78 to +5.75   \n",
       "1963  C: +2.79 to +13.06  B: -0.40 to +0.16  NaN  C: +0.78 to +5.75   \n",
       "1964  C: +2.79 to +13.06  C: +0.16 to +2.34  NaN  B: -0.38 to +0.78   \n",
       "1965  C: +2.79 to +13.06  B: -0.40 to +0.16  NaN  C: +0.78 to +5.75   \n",
       "1966  C: +2.79 to +13.06  C: +0.16 to +2.34  NaN  C: +0.78 to +5.75   \n",
       "1967  C: +2.79 to +13.06  C: +0.16 to +2.34  NaN  C: +0.78 to +5.75   \n",
       "1968  C: +2.79 to +13.06  C: +0.16 to +2.34  NaN  C: +0.78 to +5.75   \n",
       "1969  C: +2.79 to +13.06  C: +0.16 to +2.34  NaN  B: -0.38 to +0.78   \n",
       "\n",
       "                     CO2  CH4  N2O  \n",
       "1960                 NaN  NaN  NaN  \n",
       "1961  C: +3.81 to +17.59  NaN  NaN  \n",
       "1962  C: +3.81 to +17.59  NaN  NaN  \n",
       "1963  C: +3.81 to +17.59  NaN  NaN  \n",
       "1964  C: +3.81 to +17.59  NaN  NaN  \n",
       "1965  C: +3.81 to +17.59  NaN  NaN  \n",
       "1966  C: +3.81 to +17.59  NaN  NaN  \n",
       "1967  C: +3.81 to +17.59  NaN  NaN  \n",
       "1968  C: +3.81 to +17.59  NaN  NaN  \n",
       "1969  C: +3.81 to +17.59  NaN  NaN  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "TIERS_NUM = 3\n",
    "\n",
    "def boundary_str(start, end, tier):\n",
    "    return f'{tier}: {start:+0,.2f} to {end:+0,.2f}'\n",
    "\n",
    "def relabel(v, boundaries):\n",
    "    if v >= boundaries[0][0] and v <= boundaries[0][1]:\n",
    "        return boundary_str(boundaries[0][0], boundaries[0][1], tier='A')\n",
    "    elif v >= boundaries[1][0] and v <= boundaries[1][1]: \n",
    "        return boundary_str(boundaries[1][0], boundaries[1][1], tier='B')\n",
    "    elif v >= boundaries[2][0] and v <= boundaries[2][1]:\n",
    "        return boundary_str(boundaries[2][0], boundaries[2][1], tier='C')\n",
    "    else:\n",
    "        return np.nan\n",
    "        \n",
    "def get_boundaries(tiers):\n",
    "    prev_tier = tiers[0]\n",
    "    boundaries = [(prev_tier[0], prev_tier[prev_tier.shape[0] - 1])]\n",
    "    for index, tier in enumerate(tiers):\n",
    "        if index is not 0:\n",
    "            boundaries.append((prev_tier[prev_tier.shape[0] - 1], tier[tier.shape[0] - 1]))\n",
    "            prev_tier = tier\n",
    "    return boundaries\n",
    "    \n",
    "new_columns = {}\n",
    "for i, content in enumerate(df_growth.items()):  \n",
    "    (label, series) = content\n",
    "    values = np.sort(np.array([x for x in series.tolist() if not np.isnan(x)] , dtype=float))\n",
    "    if values.shape[0] < TIERS_NUM:\n",
    "        print(f'Error: there are not enough data for label {label}')\n",
    "        break\n",
    "    boundaries = get_boundaries(tiers=np.array_split(values, TIERS_NUM)) \n",
    "    new_columns[label] = [relabel(value, boundaries) for value in series.tolist()]\n",
    "    \n",
    "df = DataFrame(data=new_columns)\n",
    "df.columns = nodes\n",
    "df.index = range(years[\"min\"], years[\"max\"] + 1)\n",
    "df.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Learning of network parameters\n",
    "In pgmpy it is possible to learn the CPT of a given Bayesian network using either a **Bayesian Estimator** or a **Maximum Likelihood Estimator** (MLE). The former exploits a known prior distribution of data, the latter does not make any particular assumption.\n",
    "\n",
    "**MLE can overfit** the data in case of **small datasets**, because there can be not enough observations and thus the observed frequencies can be not representative. Another problem with MLE is the fact that **state counts** are done **conditionally** for each **parents configuration** and this causes immense fragmentation since the state counts drop even more. The **Bayesian estimator** instead does not only rely on input data to learn the network parameters, but it also takes advantage of a **prior knowledge**, expressed through a prior distribution. In this way, the estimator does not have an absolute guide, but rather a reasonable **starting assumption** that allows to counterbalance the lack of data. \n",
    "\n",
    "Although the MLE approach seems plausible, it can be overly simplistic in many cases, whereas the Bayesian one is intrinsically more robust. As a consequence the **Bayesian estimator is choosen**. \n",
    "\n",
    "There are several prior distribuitions available in pgmpy, a sensible choice of **prior** is the **Bayesian Dirichlet equivalent uniform prior** (BDeu). In the learning process, using BDeu, **N uniform samples** are **generated** for each variable to compute the pseudo-counts (default is N=5), hence the estimated probabilities in CPT are more conservative than the ones obtained through MLE (i.e. probabilities close to 1 or 0 get smoothed).\n",
    "\n",
    "In the following cell the CPT are learned and displayed."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>div.output_area pre {white-space: pre;}</style>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Check model: True\n",
      "\n",
      "CPT of Pop:\n",
      "+------------------------+----------+\n",
      "| Pop(A: -0.19 to +0.07) | 0.338164 |\n",
      "+------------------------+----------+\n",
      "| Pop(B: +0.07 to +0.50) | 0.338164 |\n",
      "+------------------------+----------+\n",
      "| Pop(C: +0.50 to +1.99) | 0.323671 |\n",
      "+------------------------+----------+ \n",
      "\n",
      "CPT of EC:\n",
      "+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+\n",
      "| GDP                    | GDP(A: -5.71 to +1.24) | GDP(A: -5.71 to +1.24) | GDP(A: -5.71 to +1.24) | GDP(A: -5.71 to +1.24) | GDP(A: -5.71 to +1.24) | GDP(A: -5.71 to +1.24) | GDP(A: -5.71 to +1.24) | GDP(A: -5.71 to +1.24) | GDP(A: -5.71 to +1.24) | GDP(B: +1.24 to +2.89) | GDP(B: +1.24 to +2.89) | GDP(B: +1.24 to +2.89) | GDP(B: +1.24 to +2.89) | GDP(B: +1.24 to +2.89) | GDP(B: +1.24 to +2.89) | GDP(B: +1.24 to +2.89) | GDP(B: +1.24 to +2.89) | GDP(B: +1.24 to +2.89) | GDP(C: +2.89 to +7.49) | GDP(C: +2.89 to +7.49) | GDP(C: +2.89 to +7.49) | GDP(C: +2.89 to +7.49) | GDP(C: +2.89 to +7.49) | GDP(C: +2.89 to +7.49) | GDP(C: +2.89 to +7.49) | GDP(C: +2.89 to +7.49) | GDP(C: +2.89 to +7.49) |\n",
      "+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+\n",
      "| Pop                    | Pop(A: -0.19 to +0.07) | Pop(A: -0.19 to +0.07) | Pop(A: -0.19 to +0.07) | Pop(B: +0.07 to +0.50) | Pop(B: +0.07 to +0.50) | Pop(B: +0.07 to +0.50) | Pop(C: +0.50 to +1.99) | Pop(C: +0.50 to +1.99) | Pop(C: +0.50 to +1.99) | Pop(A: -0.19 to +0.07) | Pop(A: -0.19 to +0.07) | Pop(A: -0.19 to +0.07) | Pop(B: +0.07 to +0.50) | Pop(B: +0.07 to +0.50) | Pop(B: +0.07 to +0.50) | Pop(C: +0.50 to +1.99) | Pop(C: +0.50 to +1.99) | Pop(C: +0.50 to +1.99) | Pop(A: -0.19 to +0.07) | Pop(A: -0.19 to +0.07) | Pop(A: -0.19 to +0.07) | Pop(B: +0.07 to +0.50) | Pop(B: +0.07 to +0.50) | Pop(B: +0.07 to +0.50) | Pop(C: +0.50 to +1.99) | Pop(C: +0.50 to +1.99) | Pop(C: +0.50 to +1.99) |\n",
      "+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+\n",
      "| Urb                    | Urb(A: -0.02 to +0.15) | Urb(B: +0.15 to +0.82) | Urb(C: +0.82 to +2.84) | Urb(A: -0.02 to +0.15) | Urb(B: +0.15 to +0.82) | Urb(C: +0.82 to +2.84) | Urb(A: -0.02 to +0.15) | Urb(B: +0.15 to +0.82) | Urb(C: +0.82 to +2.84) | Urb(A: -0.02 to +0.15) | Urb(B: +0.15 to +0.82) | Urb(C: +0.82 to +2.84) | Urb(A: -0.02 to +0.15) | Urb(B: +0.15 to +0.82) | Urb(C: +0.82 to +2.84) | Urb(A: -0.02 to +0.15) | Urb(B: +0.15 to +0.82) | Urb(C: +0.82 to +2.84) | Urb(A: -0.02 to +0.15) | Urb(B: +0.15 to +0.82) | Urb(C: +0.82 to +2.84) | Urb(A: -0.02 to +0.15) | Urb(B: +0.15 to +0.82) | Urb(C: +0.82 to +2.84) | Urb(A: -0.02 to +0.15) | Urb(B: +0.15 to +0.82) | Urb(C: +0.82 to +2.84) |\n",
      "+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+\n",
      "| EC(A: -7.05 to -0.12)  | 0.9435028248587572     | 0.09009009009009006    | 0.3333333333333333     | 0.8198198198198197     | 0.6120943952802359     | 0.3333333333333333     | 0.3333333333333333     | 0.09009009009009006    | 0.9435028248587572     | 0.13421828908554573    | 0.3333333333333333     | 0.3333333333333333     | 0.05208333333333332    | 0.4858757062146893     | 0.8198198198198197     | 0.3333333333333333     | 0.3333333333333333     | 0.052083333333333336   | 0.02824858757062147    | 0.3333333333333333     | 0.3333333333333333     | 0.09009009009009009    | 0.3333333333333333     | 0.3333333333333333     | 0.3333333333333333     | 0.3333333333333333     | 0.010857763300760043   |\n",
      "+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+\n",
      "| EC(B: -0.12 to +2.79)  | 0.028248587570621472   | 0.8198198198198197     | 0.3333333333333333     | 0.09009009009009006    | 0.2536873156342183     | 0.3333333333333333     | 0.3333333333333333     | 0.8198198198198197     | 0.028248587570621472   | 0.7315634218289085     | 0.3333333333333333     | 0.3333333333333333     | 0.8958333333333333     | 0.4858757062146893     | 0.09009009009009006    | 0.3333333333333333     | 0.3333333333333333     | 0.052083333333333336   | 0.7146892655367232     | 0.3333333333333333     | 0.3333333333333333     | 0.09009009009009009    | 0.036630036630036625   | 0.3333333333333333     | 0.3333333333333333     | 0.3333333333333333     | 0.09880564603691641    |\n",
      "+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+\n",
      "| EC(C: +2.79 to +13.06) | 0.028248587570621472   | 0.09009009009009006    | 0.3333333333333333     | 0.09009009009009006    | 0.13421828908554573    | 0.3333333333333333     | 0.3333333333333333     | 0.09009009009009006    | 0.028248587570621472   | 0.13421828908554573    | 0.3333333333333333     | 0.3333333333333333     | 0.05208333333333332    | 0.02824858757062147    | 0.09009009009009006    | 0.3333333333333333     | 0.3333333333333333     | 0.8958333333333335     | 0.2570621468926554     | 0.3333333333333333     | 0.3333333333333333     | 0.8198198198198199     | 0.63003663003663       | 0.3333333333333333     | 0.3333333333333333     | 0.3333333333333333     | 0.8903365906623236     |\n",
      "+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+------------------------+ \n",
      "\n",
      "CPT of Urb:\n",
      "+------------------------+----------+\n",
      "| Urb(A: -0.02 to +0.15) | 0.338164 |\n",
      "+------------------------+----------+\n",
      "| Urb(B: +0.15 to +0.82) | 0.338164 |\n",
      "+------------------------+----------+\n",
      "| Urb(C: +0.82 to +2.84) | 0.323671 |\n",
      "+------------------------+----------+ \n",
      "\n",
      "CPT of GDP:\n",
      "+------------------------+----------+\n",
      "| GDP(A: -5.71 to +1.24) | 0.343137 |\n",
      "+------------------------+----------+\n",
      "| GDP(B: +1.24 to +2.89) | 0.328431 |\n",
      "+------------------------+----------+\n",
      "| GDP(C: +2.89 to +7.49) | 0.328431 |\n",
      "+------------------------+----------+ \n",
      "\n",
      "CPT of FFEC:\n",
      "+-------------------------+-----------------------+-----------------------+------------------------+\n",
      "| EC                      | EC(A: -7.05 to -0.12) | EC(B: -0.12 to +2.79) | EC(C: +2.79 to +13.06) |\n",
      "+-------------------------+-----------------------+-----------------------+------------------------+\n",
      "| FFEC(A: -2.72 to -0.40) | 0.5870646766169154    | 0.3333333333333333    | 0.09895833333333334    |\n",
      "+-------------------------+-----------------------+-----------------------+------------------------+\n",
      "| FFEC(B: -0.40 to +0.16) | 0.36318407960199006   | 0.4270833333333333    | 0.19270833333333331    |\n",
      "+-------------------------+-----------------------+-----------------------+------------------------+\n",
      "| FFEC(C: +0.16 to +2.34) | 0.04975124378109453   | 0.23958333333333331   | 0.7083333333333334     |\n",
      "+-------------------------+-----------------------+-----------------------+------------------------+ \n",
      "\n",
      "CPT of REC:\n",
      "+--------------------------+-----------------------+-----------------------+------------------------+\n",
      "| EC                       | EC(A: -7.05 to -0.12) | EC(B: -0.12 to +2.79) | EC(C: +2.79 to +13.06) |\n",
      "+--------------------------+-----------------------+-----------------------+------------------------+\n",
      "| REC(A: -14.97 to +2.03)  | 0.2028985507246377    | 0.49612403100775193   | 0.3958333333333333     |\n",
      "+--------------------------+-----------------------+-----------------------+------------------------+\n",
      "| REC(B: +2.03 to +11.51)  | 0.3333333333333333    | 0.2868217054263566    | 0.3958333333333333     |\n",
      "+--------------------------+-----------------------+-----------------------+------------------------+\n",
      "| REC(C: +11.51 to +23.95) | 0.463768115942029     | 0.2170542635658915    | 0.20833333333333331    |\n",
      "+--------------------------+-----------------------+-----------------------+------------------------+ \n",
      "\n",
      "CPT of EI:\n",
      "+-----------------------+-----------------------+-----------------------+------------------------+\n",
      "| EC                    | EC(A: -7.05 to -0.12) | EC(B: -0.12 to +2.79) | EC(C: +2.79 to +13.06) |\n",
      "+-----------------------+-----------------------+-----------------------+------------------------+\n",
      "| EI(A: -3.27 to -0.38) | 0.6766169154228856    | 0.2864583333333333    | 0.052083333333333336   |\n",
      "+-----------------------+-----------------------+-----------------------+------------------------+\n",
      "| EI(B: -0.38 to +0.78) | 0.2288557213930348    | 0.4739583333333333    | 0.2864583333333333     |\n",
      "+-----------------------+-----------------------+-----------------------+------------------------+\n",
      "| EI(C: +0.78 to +5.75) | 0.09452736318407962   | 0.23958333333333331   | 0.6614583333333334     |\n",
      "+-----------------------+-----------------------+-----------------------+------------------------+ \n",
      "\n",
      "CPT of CO2:\n",
      "+-------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+\n",
      "| FFEC                    | FFEC(A: -2.72 to -0.40) | FFEC(A: -2.72 to -0.40) | FFEC(A: -2.72 to -0.40)  | FFEC(B: -0.40 to +0.16) | FFEC(B: -0.40 to +0.16) | FFEC(B: -0.40 to +0.16)  | FFEC(C: +0.16 to +2.34) | FFEC(C: +0.16 to +2.34) | FFEC(C: +0.16 to +2.34)  |\n",
      "+-------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+\n",
      "| REC                     | REC(A: -14.97 to +2.03) | REC(B: +2.03 to +11.51) | REC(C: +11.51 to +23.95) | REC(A: -14.97 to +2.03) | REC(B: +2.03 to +11.51) | REC(C: +11.51 to +23.95) | REC(A: -14.97 to +2.03) | REC(B: +2.03 to +11.51) | REC(C: +11.51 to +23.95) |\n",
      "+-------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+\n",
      "| CO2(A: -10.20 to -0.79) | 0.3333333333333333      | 0.463768115942029       | 0.6991869918699187       | 0.3333333333333333      | 0.463768115942029       | 0.3333333333333333       | 0.11904761904761905     | 0.3333333333333333      | 0.3333333333333333       |\n",
      "+-------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+\n",
      "| CO2(B: -0.79 to +3.81)  | 0.3333333333333333      | 0.463768115942029       | 0.26016260162601623      | 0.6145833333333334      | 0.463768115942029       | 0.3333333333333333       | 0.44047619047619047     | 0.3333333333333333      | 0.3333333333333333       |\n",
      "+-------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+\n",
      "| CO2(C: +3.81 to +17.59) | 0.3333333333333333      | 0.07246376811594203     | 0.04065040650406504      | 0.052083333333333336    | 0.07246376811594203     | 0.3333333333333333       | 0.44047619047619047     | 0.3333333333333333      | 0.3333333333333333       |\n",
      "+-------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+ \n",
      "\n",
      "CPT of CH4:\n",
      "+------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+\n",
      "| FFEC                   | FFEC(A: -2.72 to -0.40) | FFEC(A: -2.72 to -0.40) | FFEC(A: -2.72 to -0.40)  | FFEC(B: -0.40 to +0.16) | FFEC(B: -0.40 to +0.16) | FFEC(B: -0.40 to +0.16)  | FFEC(C: +0.16 to +2.34) | FFEC(C: +0.16 to +2.34) | FFEC(C: +0.16 to +2.34)  |\n",
      "+------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+\n",
      "| REC                    | REC(A: -14.97 to +2.03) | REC(B: +2.03 to +11.51) | REC(C: +11.51 to +23.95) | REC(A: -14.97 to +2.03) | REC(B: +2.03 to +11.51) | REC(C: +11.51 to +23.95) | REC(A: -14.97 to +2.03) | REC(B: +2.03 to +11.51) | REC(C: +11.51 to +23.95) |\n",
      "+------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+\n",
      "| CH4(A: -6.02 to -0.31) | 0.3333333333333333      | 0.5765765765765766      | 0.22424242424242424      | 0.855072463768116       | 0.6594202898550725      | 0.3333333333333333       | 0.761904761904762       | 0.3333333333333333      | 0.3333333333333333       |\n",
      "+------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+\n",
      "| CH4(B: -0.31 to +2.11) | 0.3333333333333333      | 0.3333333333333333      | 0.7151515151515152       | 0.07246376811594203     | 0.2681159420289855      | 0.3333333333333333       | 0.11904761904761905     | 0.3333333333333333      | 0.3333333333333333       |\n",
      "+------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+\n",
      "| CH4(C: +2.11 to +9.00) | 0.3333333333333333      | 0.0900900900900901      | 0.06060606060606061      | 0.07246376811594203     | 0.07246376811594203     | 0.3333333333333333       | 0.11904761904761905     | 0.3333333333333333      | 0.3333333333333333       |\n",
      "+------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+ \n",
      "\n",
      "CPT of N2O:\n",
      "+-------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+\n",
      "| FFEC                    | FFEC(A: -2.72 to -0.40) | FFEC(A: -2.72 to -0.40) | FFEC(A: -2.72 to -0.40)  | FFEC(B: -0.40 to +0.16) | FFEC(B: -0.40 to +0.16) | FFEC(B: -0.40 to +0.16)  | FFEC(C: +0.16 to +2.34) | FFEC(C: +0.16 to +2.34) | FFEC(C: +0.16 to +2.34)  |\n",
      "+-------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+\n",
      "| REC                     | REC(A: -14.97 to +2.03) | REC(B: +2.03 to +11.51) | REC(C: +11.51 to +23.95) | REC(A: -14.97 to +2.03) | REC(B: +2.03 to +11.51) | REC(C: +11.51 to +23.95) | REC(A: -14.97 to +2.03) | REC(B: +2.03 to +11.51) | REC(C: +11.51 to +23.95) |\n",
      "+-------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+\n",
      "| N2O(A: -4.31 to +0.61)  | 0.3333333333333333      | 0.5765765765765766      | 0.7151515151515152       | 0.463768115942029       | 0.07246376811594203     | 0.3333333333333333       | 0.11904761904761905     | 0.3333333333333333      | 0.3333333333333333       |\n",
      "+-------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+\n",
      "| N2O(B: +0.61 to +2.75)  | 0.3333333333333333      | 0.3333333333333333      | 0.06060606060606061      | 0.2681159420289855      | 0.6594202898550725      | 0.3333333333333333       | 0.11904761904761905     | 0.3333333333333333      | 0.3333333333333333       |\n",
      "+-------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+\n",
      "| N2O(C: +2.75 to +12.61) | 0.3333333333333333      | 0.0900900900900901      | 0.22424242424242424      | 0.2681159420289855      | 0.2681159420289855      | 0.3333333333333333       | 0.761904761904762       | 0.3333333333333333      | 0.3333333333333333       |\n",
      "+-------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+-------------------------+-------------------------+--------------------------+ \n",
      "\n"
     ]
    }
   ],
   "source": [
    "from pgmpy.estimators import BayesianEstimator, MaximumLikelihoodEstimator\n",
    "from IPython.core.display import display, HTML\n",
    "\n",
    "# disable text wrapping in output cell\n",
    "display(HTML(\"<style>div.output_area pre {white-space: pre;}</style>\"))\n",
    "\n",
    "model.cpds = []\n",
    "model.fit(data=df, \n",
    "          estimator=BayesianEstimator,\n",
    "          prior_type=\"BDeu\",\n",
    "          equivalent_sample_size=10,\n",
    "          complete_samples_only=False)\n",
    "\n",
    "print(f'Check model: {model.check_model()}\\n')\n",
    "for cpd in model.get_cpds():\n",
    "    print(f'CPT of {cpd.variable}:')\n",
    "    print(cpd, '\\n')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Network analysis\n",
    "\n",
    "Among all the features, in pgmpy it is possible to investigate several **properties of the network**. For instance, it is possible to check for **conditional independencies** and **active trails** with respect to some given evidence or to ask for the **Markov blanket** of a node."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "There can be made 2759 valid independence assertions with respect to the all possible given evidence.\n",
      "For instance, any node in the network is independent of its non-descendents given its parents (local semantics):\n",
      " \n",
      "(Pop _|_ GDP, Urb)\n",
      "(Urb _|_ Pop, GDP)\n",
      "(GDP _|_ Pop, Urb)\n",
      "(FFEC _|_ EI, Pop, REC, GDP, Urb | EC)\n",
      "(REC _|_ EI, Pop, FFEC, GDP, Urb | EC)\n",
      "(EI _|_ N2O, REC, GDP, Urb, CO2, Pop, FFEC, CH4 | EC)\n",
      "(CO2 _|_ N2O, EI, Pop, Urb, GDP, CH4, EC | FFEC, REC)\n",
      "(CH4 _|_ N2O, EI, Pop, Urb, GDP, CO2, EC | FFEC, REC)\n",
      "(N2O _|_ EI, Pop, Urb, GDP, CO2, CH4, EC | FFEC, REC)\n",
      "\n",
      "Active trails between 'FFEC' and {'N2O', 'REC', 'Urb', 'GDP', 'CO2', 'EI', 'Pop', 'CH4', 'EC'} given no evidence.\n",
      "Active trails between 'FFEC' and {'CO2', 'CH4', 'N2O'} given the evidence {'EC'}.\n",
      "Active trails between 'FFEC' and {'CH4', 'N2O', 'REC'} given the evidence {'CO2', 'EC'}.\n",
      "No active trails for 'EI' given the evidence {'EC'}.\n",
      "Active trails between 'CH4' and {'CO2', 'N2O', 'REC'} given the evidence {'FFEC', 'EC'}.\n",
      "\n",
      "Markov blanket of 'Pop' is {'Urb', 'GDP', 'EC'}\n",
      "Markov blanket of 'EC' is {'REC', 'GDP', 'Urb', 'EI', 'Pop', 'FFEC'}\n",
      "Markov blanket of 'REC' is {'N2O', 'CO2', 'FFEC', 'CH4', 'EC'}\n",
      "Markov blanket of 'CH4' is {'FFEC', 'REC'}\n"
     ]
    }
   ],
   "source": [
    "print(f'There can be made {len(model.get_independencies().get_assertions())}',\n",
    "      'valid independence assertions with respect to the all possible given evidence.')\n",
    "print('For instance, any node in the network is independent of its non-descendents given its parents (local semantics):\\n',\n",
    "      f'\\n{model.local_independencies(nodes)}\\n')\n",
    "\n",
    "def active_trails_of(query, evidence):\n",
    "    active = model.active_trail_nodes(query, observed=evidence).get(query)\n",
    "    active.remove(query)\n",
    "    if active:\n",
    "        if evidence:\n",
    "            print(f'Active trails between \\'{query}\\' and {active} given the evidence {set(evidence)}.')\n",
    "        else:\n",
    "            print(f'Active trails between \\'{query}\\' and {active} given no evidence.')\n",
    "    else:\n",
    "        print(f'No active trails for \\'{query}\\' given the evidence {set(evidence)}.')\n",
    "        \n",
    "def markov_blanket_of(node):\n",
    "    print(f'Markov blanket of \\'{node}\\' is {set(model.get_markov_blanket(node))}')\n",
    "\n",
    "active_trails_of(query='FFEC', evidence=[])\n",
    "active_trails_of(query='FFEC', evidence=['EC'])\n",
    "active_trails_of(query='FFEC', evidence=['EC', 'CO2'])\n",
    "active_trails_of(query='EI', evidence=['EC'])\n",
    "active_trails_of(query='CH4', evidence=['EC', 'FFEC'])\n",
    "print()\n",
    "markov_blanket_of(node='Pop')\n",
    "markov_blanket_of(node='EC')\n",
    "markov_blanket_of(node='REC')\n",
    "markov_blanket_of(node='CH4') # note: a bug in pgmpy 0.1.10 raise a KeyError here. \n",
    "                              # I opened an issue and I got accepted my pull request with the bug fix: \n",
    "                              # https://github.com/pgmpy/pgmpy/issues/1293\n",
    "                              # https://github.com/pgmpy/pgmpy/pull/1294"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The **independence assertions**, such as $(A \\perp B | C)$, are implemented in pgmpy with the class ```IndependenceAssertion```, which has 3 fields: \n",
    "\n",
    " - ```event1```: random variable which is independent ($A$ in the example). \n",
    " \n",
    " - ```event2```: random variables from which ```event1``` is independent ($B$ in the example). \n",
    " \n",
    " - ```event3```: random variables given which ```event1``` is independent of ```event2``` ($C$ in the example).\n",
    "\n",
    "In the following cell it is evaluated which are the nodes that have the maximum and the minimum number of appearance in independence assertions as independent variable or evidence. It can be notice that the closer a node is to the *core* of the network, the less are the independence assertions in which it is the independent variable and the more are the ones in which it is given as evidence."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Nodes which appear most (311 times) in independence assertions as independent variable are:\n",
      "{'EI', 'Pop', 'GDP', 'Urb'}\n",
      "Nodes which appear least (112 times) in independence assertions as independent variable are:\n",
      "{'EC'}\n",
      "Nodes which appear most (2222 times) in independence assertions as evidence are:\n",
      "{'EC'}\n",
      "Nodes which appear least (1179 times) in independence assertions as evidence are:\n",
      "{'EI'}\n"
     ]
    }
   ],
   "source": [
    "def independent_assertions_score_function(node):\n",
    "    return len([a for a in model.get_independencies().get_assertions() if node in a.event1])\n",
    "\n",
    "def evidence_assertions_score_function(node):\n",
    "    return len([a for a in model.get_independencies().get_assertions() if node in a.event3])\n",
    "\n",
    "def update(assertion_dict, node, score_function):\n",
    "    tmp_score = score_function(node)\n",
    "    if tmp_score == assertion_dict[\"max\"][\"score\"]:\n",
    "        assertion_dict[\"max\"][\"nodes\"].append(node)\n",
    "    elif tmp_score > assertion_dict[\"max\"][\"score\"]:\n",
    "        assertion_dict[\"max\"][\"nodes\"] = [node]\n",
    "        assertion_dict[\"max\"][\"score\"] = tmp_score\n",
    "    if tmp_score == assertion_dict[\"min\"][\"score\"]:\n",
    "        assertion_dict[\"min\"][\"nodes\"].append(node)\n",
    "    elif tmp_score < assertion_dict[\"min\"][\"score\"]:\n",
    "        assertion_dict[\"min\"][\"nodes\"] = [node]\n",
    "        assertion_dict[\"min\"][\"score\"] = tmp_score  \n",
    "\n",
    "if len(nodes) > 1:\n",
    "    independent_init = independent_assertions_score_function(nodes[0])\n",
    "    independent_dict = {\"max\": {\"nodes\": [nodes[0]], \"score\": independent_init}, \n",
    "                       \"min\": {\"nodes\": [nodes[0]], \"score\": independent_init}}\n",
    "    evidence_init = evidence_assertions_score_function(nodes[0]) \n",
    "    evidence_dict = {\"max\": {\"nodes\": [nodes[0]], \"score\": evidence_init}, \n",
    "                    \"min\": {\"nodes\": [nodes[0]], \"score\": evidence_init}} \n",
    "    for node in nodes[1:]:\n",
    "        update(independent_dict, node, independent_assertions_score_function)\n",
    "        update(evidence_dict, node, evidence_assertions_score_function)\n",
    "\n",
    "print(f'Nodes which appear most ({independent_dict[\"max\"][\"score\"]} times) in independence assertions',\n",
    "      f'as independent variable are:\\n{set(independent_dict[\"max\"][\"nodes\"])}')\n",
    "print(f'Nodes which appear least ({independent_dict[\"min\"][\"score\"]} times) in independence assertions',\n",
    "      f'as independent variable are:\\n{set(independent_dict[\"min\"][\"nodes\"])}')\n",
    "print(f'Nodes which appear most ({evidence_dict[\"max\"][\"score\"]} times) in independence assertions',\n",
    "      f'as evidence are:\\n{set(evidence_dict[\"max\"][\"nodes\"])}')\n",
    "print(f'Nodes which appear least ({evidence_dict[\"min\"][\"score\"]} times) in independence assertions',\n",
    "      f'as evidence are:\\n{set(evidence_dict[\"min\"][\"nodes\"])}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Some queries on independence assertions are proposed."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(EI _|_ N2O | EC): True\n",
      "(EI _|_ REC, Urb, GDP, Pop, FFEC | EC): True\n",
      "(EC _|_ CH4 | FFEC): False\n",
      "(EC _|_ CH4 | FFEC, REC): True\n",
      "(FFEC _|_ REC | EC): True\n",
      "(FFEC _|_ REC | CO2, EC): False\n",
      "(CH4 _|_ CO2 | FFEC): False\n",
      "(CH4 _|_ CO2 | FFEC, REC): True\n"
     ]
    }
   ],
   "source": [
    "from pgmpy.independencies.Independencies import IndependenceAssertion\n",
    "\n",
    "def check_assertion(model, independent, from_variables, evidence):\n",
    "    assertion = IndependenceAssertion(independent, from_variables, evidence)\n",
    "    result = False\n",
    "    for a in model.get_independencies().get_assertions():\n",
    "        if frozenset(assertion.event1) == a.event1 and assertion.event2 <= a.event2 and frozenset(assertion.event3) == a.event3:\n",
    "            result = True\n",
    "            break\n",
    "    print(f'{assertion}: {result}')\n",
    "\n",
    "check_assertion(model, independent=['EI'], from_variables=['N2O'], evidence=['EC'])\n",
    "check_assertion(model, independent=['EI'], from_variables=[\"FFEC\", \"REC\", \"GDP\", \"Pop\", \"Urb\"], evidence=['EC'])\n",
    "check_assertion(model, independent=['EC'], from_variables=[\"CH4\"], evidence=['FFEC'])\n",
    "check_assertion(model, independent=['EC'], from_variables=[\"CH4\"], evidence=['FFEC', 'REC'])\n",
    "check_assertion(model, independent=['FFEC'], from_variables=[\"REC\"], evidence=['EC'])\n",
    "check_assertion(model, independent=['FFEC'], from_variables=[\"REC\"], evidence=['EC', 'CO2'])\n",
    "check_assertion(model, independent=['CH4'], from_variables=[\"CO2\"], evidence=['FFEC'])\n",
    "check_assertion(model, independent=['CH4'], from_variables=[\"CO2\"], evidence=['FFEC', 'REC'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  Inferences\n",
    "In pgmpy it is possible to perform **inference** on a Bayesian network through the **Variable Elimination method**.  The **elimination order** is evaluated through **heuristic functions**, which assign an elimination cost to each node that has to be removed (i.e. to each node apart from the query nodes and the evidence nodes). The variable elimination algorithm is then executed accordingly with the assigned node costs.\n",
    "\n",
    "The [available heuristic functions](https://pgmpy.org/inference.html#module-pgmpy.inference.EliminationOrder) assign the cost of a node as:\n",
    "\n",
    "- `MinFill`: the number of edges that need to be added to the graph due to its elimination.\n",
    "\n",
    "- `MinNeighbors`: the number of neighbors it has in the current graph.\n",
    "\n",
    "- `MinWeight`: the product of weights, domain cardinality, of its neighbors.\n",
    "\n",
    "- `WeightedMinFill`: the sum of weights of the edges that need to be added to the graph due to its elimination, where a weight of an edge is the product of the weights, domain cardinality, of its constituent vertices.\n",
    "\n",
    "The following cell is dedicated to inference queries and experiments on the cost heuristic functions. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Elimination order for ['GDP'] with no evidence computed through MinNeighbors heuristic:\n",
      "['EI', 'N2O', 'CO2', 'CH4', 'REC', 'FFEC', 'Urb', 'Pop', 'EC']\n",
      "--- Ordering found in 0.0022 seconds ---\n",
      "\n",
      "Probability query of ['GDP'] with no evidence through precomputed elimination order:\n",
      "+------------------------+------------+\n",
      "| GDP                    |   phi(GDP) |\n",
      "+========================+============+\n",
      "| GDP(A: -5.71 to +1.24) |     0.3431 |\n",
      "+------------------------+------------+\n",
      "| GDP(B: +1.24 to +2.89) |     0.3284 |\n",
      "+------------------------+------------+\n",
      "| GDP(C: +2.89 to +7.49) |     0.3284 |\n",
      "+------------------------+------------+\n",
      "--- Query executed in 0.0196 seconds ---\n",
      "\n",
      "Probability query of ['GDP'] with no evidence through dummy elimination order:\n",
      "+------------------------+------------+\n",
      "| GDP                    |   phi(GDP) |\n",
      "+========================+============+\n",
      "| GDP(A: -5.71 to +1.24) |     0.3431 |\n",
      "+------------------------+------------+\n",
      "| GDP(B: +1.24 to +2.89) |     0.3284 |\n",
      "+------------------------+------------+\n",
      "| GDP(C: +2.89 to +7.49) |     0.3284 |\n",
      "+------------------------+------------+\n",
      "--- Query executed in 0.1300 seconds ---\n",
      "\n",
      "Different elimination order found for probability query of ['GDP'] with no evidence:\n",
      "MinFill:         ['N2O', 'Urb', 'CO2', 'REC', 'EI', 'Pop', 'FFEC', 'CH4', 'EC']\n",
      "MinNeighbors:    ['EI', 'N2O', 'CO2', 'CH4', 'REC', 'FFEC', 'Urb', 'Pop', 'EC']\n",
      "MinWeight:       ['EI', 'N2O', 'CO2', 'CH4', 'REC', 'FFEC', 'Urb', 'Pop', 'EC']\n",
      "WeightedMinFill: ['EI', 'N2O', 'CO2', 'CH4', 'REC', 'FFEC', 'Urb', 'Pop', 'EC']\n",
      "\n",
      "Probability query of ['CO2'] with evidence {'EC': 'A: -7.05 to -0.12'} computed through MinFill heuristic:\n",
      "+-------------------------+------------+\n",
      "| CO2                     |   phi(CO2) |\n",
      "+=========================+============+\n",
      "| CO2(A: -10.20 to -0.79) |     0.4721 |\n",
      "+-------------------------+------------+\n",
      "| CO2(B: -0.79 to +3.81)  |     0.3765 |\n",
      "+-------------------------+------------+\n",
      "| CO2(C: +3.81 to +17.59) |     0.1514 |\n",
      "+-------------------------+------------+\n",
      "--- Query executed in 0.0237 seconds ---\n",
      "\n",
      "Different elimination order found for probability query of ['CO2'] with evidence {'EC': 'A: -7.05 to -0.12'}:\n",
      "MinFill:         ['N2O', 'GDP', 'Urb', 'EI', 'Pop', 'CH4', 'REC', 'FFEC']\n",
      "MinNeighbors:    ['EI', 'N2O', 'CH4', 'REC', 'FFEC', 'GDP', 'Urb', 'Pop']\n",
      "MinWeight:       ['EI', 'N2O', 'CH4', 'REC', 'FFEC', 'GDP', 'Urb', 'Pop']\n",
      "WeightedMinFill: ['EI', 'N2O', 'CH4', 'REC', 'FFEC', 'GDP', 'Urb', 'Pop']\n",
      "\n",
      "Probability query of ['CO2'] with evidence {'EC': 'A: -7.05 to -0.12'} computed through MinNeighbors heuristic:\n",
      "+-------------------------+------------+\n",
      "| CO2                     |   phi(CO2) |\n",
      "+=========================+============+\n",
      "| CO2(A: -10.20 to -0.79) |     0.4721 |\n",
      "+-------------------------+------------+\n",
      "| CO2(B: -0.79 to +3.81)  |     0.3765 |\n",
      "+-------------------------+------------+\n",
      "| CO2(C: +3.81 to +17.59) |     0.1514 |\n",
      "+-------------------------+------------+\n",
      "--- Query executed in 0.0302 seconds ---\n",
      "\n"
     ]
    }
   ],
   "source": [
    "from pgmpy.inference import VariableElimination\n",
    "import time\n",
    "\n",
    "def query_report(infer, variables, evidence=None, elimination_order=\"MinFill\", show_progress=False, desc=\"\"):\n",
    "    if desc:\n",
    "        print(desc)\n",
    "    start_time = time.time()\n",
    "    print(infer.query(variables=variables, \n",
    "                      evidence=evidence, \n",
    "                      elimination_order=elimination_order, \n",
    "                      show_progress=show_progress))\n",
    "    print(f'--- Query executed in {time.time() - start_time:0,.4f} seconds ---\\n')\n",
    "    \n",
    "def get_ordering(infer, variables, evidence=None, elimination_order=\"MinFill\", show_progress=False, desc=\"\"):\n",
    "    start_time = time.time()\n",
    "    ordering = infer._get_elimination_order(variables=variables, \n",
    "                                        evidence=evidence, \n",
    "                                        elimination_order=elimination_order, \n",
    "                                        show_progress=show_progress)\n",
    "    if desc:\n",
    "        print(desc, ordering, sep='\\n')\n",
    "        print(f'--- Ordering found in {time.time() - start_time:0,.4f} seconds ---\\n')\n",
    "    return ordering\n",
    "\n",
    "def padding(heuristic):\n",
    "    return (heuristic + \":\").ljust(16)\n",
    "\n",
    "def compare_all_ordering(infer, variables, evidence=None, show_progress=False):\n",
    "    ord_dict = {\n",
    "        \"MinFill\": get_ordering(infer, variables, evidence, \"MinFill\", show_progress),\n",
    "        \"MinNeighbors\": get_ordering(infer, variables, evidence, \"MinNeighbors\", show_progress),\n",
    "        \"MinWeight\": get_ordering(infer, variables, evidence, \"MinWeight\", show_progress),\n",
    "        \"WeightedMinFill\": get_ordering(infer, variables, evidence, \"WeightedMinFill\", show_progress)\n",
    "    }\n",
    "    if not evidence:\n",
    "        pre = f'elimination order found for probability query of {variables} with no evidence:'\n",
    "    else:\n",
    "        pre = f'elimination order found for probability query of {variables} with evidence {evidence}:'\n",
    "    if ord_dict[\"MinFill\"] == ord_dict[\"MinNeighbors\"] and ord_dict[\"MinFill\"] == ord_dict[\"MinWeight\"] and ord_dict[\"MinFill\"] == ord_dict[\"WeightedMinFill\"]:\n",
    "        print(f'All heuristics find the same {pre}.\\n{ord_dict[\"MinFill\"]}\\n')\n",
    "    else:\n",
    "        print(f'Different {pre}')\n",
    "        for heuristic, order in ord_dict.items():\n",
    "            print(f'{padding(heuristic)} {order}')\n",
    "        print()\n",
    "            \n",
    "infer = VariableElimination(model)\n",
    "\n",
    "var = ['GDP']\n",
    "heuristic = \"MinNeighbors\"\n",
    "ordering = get_ordering(infer, variables=var, elimination_order=heuristic,\n",
    "                        desc=f'Elimination order for {var} with no evidence computed through {heuristic} heuristic:')\n",
    "query_report(infer, variables=var, elimination_order=ordering, \n",
    "             desc=f'Probability query of {var} with no evidence through precomputed elimination order:') \n",
    "query_report(infer, variables=var, elimination_order=list(reversed(ordering)), \n",
    "             desc=f'Probability query of {var} with no evidence through dummy elimination order:')\n",
    "compare_all_ordering(infer, variables=var)\n",
    "\n",
    "var = ['CO2']\n",
    "ev = {'EC': 'A: -7.05 to -0.12'}\n",
    "heuristic = \"MinFill\"\n",
    "query_report(infer, variables=var, evidence=ev, elimination_order=heuristic, \n",
    "             desc=f'Probability query of {var} with evidence {ev} computed through {heuristic} heuristic:')\n",
    "compare_all_ordering(infer, variables=var, evidence=ev)\n",
    "heuristic = \"MinNeighbors\"\n",
    "query_report(infer, variables=var, evidence=ev, elimination_order=heuristic, \n",
    "             desc=f'Probability query of {var} with evidence {ev} computed through {heuristic} heuristic:') "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This last part of this document try to answer to some **key questions** using probability queries about the greenhouse gases scenario:\n",
    "\n",
    "- a considerable population growth lead to an increase of energy consumption and CO<sub>2</sub> diffusion\n",
    "- an increase of urbanization growth rate and GDP per capita are important factors in CO<sub>2</sub> diffusion\n",
    "- energy consumption reduction lead to CO<sub>2</sub> diffusion reduction\n",
    "- an increase of CO<sub>2</sub> diffusion is evidence of an increase of CH<sub>4</sub> and N<sub>2</sub>O diffusion\n",
    "- a reduction of CO<sub>2</sub> diffusion is evidence of a reduction of CH<sub>4</sub> and N<sub>2</sub>O diffusion\n",
    "- fossil fuel consumption reduction and renewable energy consumption increase impact significantly on greenhouse gases diffusion."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Probability of energy consumption increase with population growth over +0.50%:\n",
      "+------------------------+-----------+\n",
      "| EC                     |   phi(EC) |\n",
      "+========================+===========+\n",
      "| EC(A: -7.05 to -0.12)  |    0.3087 |\n",
      "+------------------------+-----------+\n",
      "| EC(B: -0.12 to +2.79)  |    0.3011 |\n",
      "+------------------------+-----------+\n",
      "| EC(C: +2.79 to +13.06) |    0.3902 |\n",
      "+------------------------+-----------+\n",
      "--- Query executed in 0.0331 seconds ---\n",
      "\n",
      "Probability of CO2 increase with population growth over +0.50%:\n",
      "+-------------------------+------------+\n",
      "| CO2                     |   phi(CO2) |\n",
      "+=========================+============+\n",
      "| CO2(A: -10.20 to -0.79) |     0.3704 |\n",
      "+-------------------------+------------+\n",
      "| CO2(B: -0.79 to +3.81)  |     0.4008 |\n",
      "+-------------------------+------------+\n",
      "| CO2(C: +3.81 to +17.59) |     0.2288 |\n",
      "+-------------------------+------------+\n",
      "--- Query executed in 0.0276 seconds ---\n",
      "\n",
      "Probability of CO2 increase with urbanization growth over +0.82%:\n",
      "+-------------------------+------------+\n",
      "| CO2                     |   phi(CO2) |\n",
      "+=========================+============+\n",
      "| CO2(A: -10.20 to -0.79) |     0.3793 |\n",
      "+-------------------------+------------+\n",
      "| CO2(B: -0.79 to +3.81)  |     0.3965 |\n",
      "+-------------------------+------------+\n",
      "| CO2(C: +3.81 to +17.59) |     0.2242 |\n",
      "+-------------------------+------------+\n",
      "--- Query executed in 0.0253 seconds ---\n",
      "\n",
      "Probability of CO2 increase with GDP per capita growth over +2.89%:\n",
      "+-------------------------+------------+\n",
      "| CO2                     |   phi(CO2) |\n",
      "+=========================+============+\n",
      "| CO2(A: -10.20 to -0.79) |     0.3570 |\n",
      "+-------------------------+------------+\n",
      "| CO2(B: -0.79 to +3.81)  |     0.4021 |\n",
      "+-------------------------+------------+\n",
      "| CO2(C: +3.81 to +17.59) |     0.2409 |\n",
      "+-------------------------+------------+\n",
      "--- Query executed in 0.0234 seconds ---\n",
      "\n",
      "Probability of CO2 increase with:\n",
      " - population growth over +0.50%\n",
      " - urbanization growth over +0.82%\n",
      " - GDP per capita growth over +2.89%:\n",
      "+-------------------------+------------+\n",
      "| CO2                     |   phi(CO2) |\n",
      "+=========================+============+\n",
      "| CO2(A: -10.20 to -0.79) |     0.3044 |\n",
      "+-------------------------+------------+\n",
      "| CO2(B: -0.79 to +3.81)  |     0.4011 |\n",
      "+-------------------------+------------+\n",
      "| CO2(C: +3.81 to +17.59) |     0.2945 |\n",
      "+-------------------------+------------+\n",
      "--- Query executed in 0.0251 seconds ---\n",
      "\n",
      "Probability of CO2 increase with energy consumption growth under -0.12%:\n",
      "+-------------------------+------------+\n",
      "| CO2                     |   phi(CO2) |\n",
      "+=========================+============+\n",
      "| CO2(A: -10.20 to -0.79) |     0.4721 |\n",
      "+-------------------------+------------+\n",
      "| CO2(B: -0.79 to +3.81)  |     0.3765 |\n",
      "+-------------------------+------------+\n",
      "| CO2(C: +3.81 to +17.59) |     0.1514 |\n",
      "+-------------------------+------------+\n",
      "--- Query executed in 0.0320 seconds ---\n",
      "\n",
      "Probability of CO2 increase with energy consumption growth over +2.79%:\n",
      "+-------------------------+------------+\n",
      "| CO2                     |   phi(CO2) |\n",
      "+=========================+============+\n",
      "| CO2(A: -10.20 to -0.79) |     0.2959 |\n",
      "+-------------------------+------------+\n",
      "| CO2(B: -0.79 to +3.81)  |     0.3984 |\n",
      "+-------------------------+------------+\n",
      "| CO2(C: +3.81 to +17.59) |     0.3058 |\n",
      "+-------------------------+------------+\n",
      "--- Query executed in 0.0295 seconds ---\n",
      "\n",
      "Probability of CH4 increase with CO2 growth over +3.81%:\n",
      "+------------------------+------------+\n",
      "| CH4                    |   phi(CH4) |\n",
      "+========================+============+\n",
      "| CH4(A: -6.02 to -0.31) |     0.4789 |\n",
      "+------------------------+------------+\n",
      "| CH4(B: -0.31 to +2.11) |     0.2765 |\n",
      "+------------------------+------------+\n",
      "| CH4(C: +2.11 to +9.00) |     0.2446 |\n",
      "+------------------------+------------+\n",
      "--- Query executed in 0.0279 seconds ---\n",
      "\n",
      "Probability of CH4 increase with CO2 growth under -0.79%:\n",
      "+------------------------+------------+\n",
      "| CH4                    |   phi(CH4) |\n",
      "+========================+============+\n",
      "| CH4(A: -6.02 to -0.31) |     0.4573 |\n",
      "+------------------------+------------+\n",
      "| CH4(B: -0.31 to +2.11) |     0.3776 |\n",
      "+------------------------+------------+\n",
      "| CH4(C: +2.11 to +9.00) |     0.1650 |\n",
      "+------------------------+------------+\n",
      "--- Query executed in 0.0219 seconds ---\n",
      "\n",
      "Probability of CH4 increase with no given evidence:\n",
      "+------------------------+------------+\n",
      "| CH4                    |   phi(CH4) |\n",
      "+========================+============+\n",
      "| CH4(A: -6.02 to -0.31) |     0.5014 |\n",
      "+------------------------+------------+\n",
      "| CH4(B: -0.31 to +2.11) |     0.3155 |\n",
      "+------------------------+------------+\n",
      "| CH4(C: +2.11 to +9.00) |     0.1831 |\n",
      "+------------------------+------------+\n",
      "--- Query executed in 0.0198 seconds ---\n",
      "\n",
      "Probability of N2O increase with CO2 growth over +3.81%:\n",
      "+-------------------------+------------+\n",
      "| N2O                     |   phi(N2O) |\n",
      "+=========================+============+\n",
      "| N2O(A: -4.31 to +0.61)  |     0.2901 |\n",
      "+-------------------------+------------+\n",
      "| N2O(B: +0.61 to +2.75)  |     0.2807 |\n",
      "+-------------------------+------------+\n",
      "| N2O(C: +2.75 to +12.61) |     0.4292 |\n",
      "+-------------------------+------------+\n",
      "--- Query executed in 0.0220 seconds ---\n",
      "\n",
      "Probability of N2O increase with CO2 growth under -0.79%:\n",
      "+-------------------------+------------+\n",
      "| N2O                     |   phi(N2O) |\n",
      "+=========================+============+\n",
      "| N2O(A: -4.31 to +0.61)  |     0.4274 |\n",
      "+-------------------------+------------+\n",
      "| N2O(B: +0.61 to +2.75)  |     0.2968 |\n",
      "+-------------------------+------------+\n",
      "| N2O(C: +2.75 to +12.61) |     0.2758 |\n",
      "+-------------------------+------------+\n",
      "--- Query executed in 0.0223 seconds ---\n",
      "\n",
      "Probability of N2O increase with no given evidence:\n",
      "+-------------------------+------------+\n",
      "| N2O                     |   phi(N2O) |\n",
      "+=========================+============+\n",
      "| N2O(A: -4.31 to +0.61)  |     0.3699 |\n",
      "+-------------------------+------------+\n",
      "| N2O(B: +0.61 to +2.75)  |     0.2982 |\n",
      "+-------------------------+------------+\n",
      "| N2O(C: +2.75 to +12.61) |     0.3319 |\n",
      "+-------------------------+------------+\n",
      "--- Query executed in 0.0209 seconds ---\n",
      "\n",
      "Joint probability of fossil fuel energy consumption and renewable energy consumption:\n",
      "+--------------------------+-------------------------+-----------------+\n",
      "| REC                      | FFEC                    |   phi(REC,FFEC) |\n",
      "+==========================+=========================+=================+\n",
      "| REC(A: -14.97 to +2.03)  | FFEC(A: -2.72 to -0.40) |          0.1110 |\n",
      "+--------------------------+-------------------------+-----------------+\n",
      "| REC(A: -14.97 to +2.03)  | FFEC(B: -0.40 to +0.16) |          0.1221 |\n",
      "+--------------------------+-------------------------+-----------------+\n",
      "| REC(A: -14.97 to +2.03)  | FFEC(C: +0.16 to +2.34) |          0.1290 |\n",
      "+--------------------------+-------------------------+-----------------+\n",
      "| REC(B: +2.03 to +11.51)  | FFEC(A: -2.72 to -0.40) |          0.1141 |\n",
      "+--------------------------+-------------------------+-----------------+\n",
      "| REC(B: +2.03 to +11.51)  | FFEC(B: -0.40 to +0.16) |          0.1081 |\n",
      "+--------------------------+-------------------------+-----------------+\n",
      "| REC(B: +2.03 to +11.51)  | FFEC(C: +0.16 to +2.34) |          0.1140 |\n",
      "+--------------------------+-------------------------+-----------------+\n",
      "| REC(C: +11.51 to +23.95) | FFEC(A: -2.72 to -0.40) |          0.1276 |\n",
      "+--------------------------+-------------------------+-----------------+\n",
      "| REC(C: +11.51 to +23.95) | FFEC(B: -0.40 to +0.16) |          0.1037 |\n",
      "+--------------------------+-------------------------+-----------------+\n",
      "| REC(C: +11.51 to +23.95) | FFEC(C: +0.16 to +2.34) |          0.0705 |\n",
      "+--------------------------+-------------------------+-----------------+\n",
      "--- Query executed in 0.0218 seconds ---\n",
      "\n",
      "Probability of CO2 increase with:\n",
      " - fossil fuel energy consumption growth under -0.40%\n",
      " - renewable energy consumption growth over +11.51%\n",
      "+-------------------------+------------+\n",
      "| CO2                     |   phi(CO2) |\n",
      "+=========================+============+\n",
      "| CO2(A: -10.20 to -0.79) |     0.6992 |\n",
      "+-------------------------+------------+\n",
      "| CO2(B: -0.79 to +3.81)  |     0.2602 |\n",
      "+-------------------------+------------+\n",
      "| CO2(C: +3.81 to +17.59) |     0.0407 |\n",
      "+-------------------------+------------+\n",
      "--- Query executed in 0.0250 seconds ---\n",
      "\n",
      "Probability of CH4 increase with:\n",
      " - fossil fuel energy consumption growth under -0.40%\n",
      " - renewable energy consumption growth over +11.51%\n",
      "+------------------------+------------+\n",
      "| CH4                    |   phi(CH4) |\n",
      "+========================+============+\n",
      "| CH4(A: -6.02 to -0.31) |     0.2242 |\n",
      "+------------------------+------------+\n",
      "| CH4(B: -0.31 to +2.11) |     0.7152 |\n",
      "+------------------------+------------+\n",
      "| CH4(C: +2.11 to +9.00) |     0.0606 |\n",
      "+------------------------+------------+\n",
      "--- Query executed in 0.0239 seconds ---\n",
      "\n",
      "Probability of N2O increase with:\n",
      " - fossil fuel energy consumption growth under -0.40%\n",
      " - renewable energy consumption growth over +11.51%\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "+-------------------------+------------+\n",
      "| N2O                     |   phi(N2O) |\n",
      "+=========================+============+\n",
      "| N2O(A: -4.31 to +0.61)  |     0.7152 |\n",
      "+-------------------------+------------+\n",
      "| N2O(B: +0.61 to +2.75)  |     0.0606 |\n",
      "+-------------------------+------------+\n",
      "| N2O(C: +2.75 to +12.61) |     0.2242 |\n",
      "+-------------------------+------------+\n",
      "--- Query executed in 0.0273 seconds ---\n",
      "\n"
     ]
    }
   ],
   "source": [
    "query_report(infer, variables=['EC'], evidence={'Pop': 'C: +0.50 to +1.99'},\n",
    "             desc='Probability of energy consumption increase with population growth over +0.50%:')\n",
    "query_report(infer, variables=['CO2'], evidence={'Pop': 'C: +0.50 to +1.99'},\n",
    "             desc='Probability of CO2 increase with population growth over +0.50%:')\n",
    "query_report(infer, variables=['CO2'], evidence={'Urb': 'C: +0.82 to +2.84'}, \n",
    "             desc='Probability of CO2 increase with urbanization growth over +0.82%:')\n",
    "query_report(infer, variables=['CO2'], evidence={'GDP': 'C: +2.89 to +7.49'}, \n",
    "             desc='Probability of CO2 increase with GDP per capita growth over +2.89%:')\n",
    "query_report(infer, variables=['CO2'], \n",
    "             evidence={'Pop': 'C: +0.50 to +1.99', 'Urb': 'C: +0.82 to +2.84', 'GDP': 'C: +2.89 to +7.49'},\n",
    "             desc='Probability of CO2 increase with:\\n - population growth over +0.50%\\n - urbanization growth over +0.82%\\n - GDP per capita growth over +2.89%:')\n",
    "query_report(infer, variables=['CO2'], evidence={'EC': 'A: -7.05 to -0.12'},\n",
    "             desc='Probability of CO2 increase with energy consumption growth under -0.12%:')\n",
    "query_report(infer, variables=['CO2'], evidence={'EC': 'C: +2.79 to +13.06'},\n",
    "             desc='Probability of CO2 increase with energy consumption growth over +2.79%:')\n",
    "query_report(infer, variables=['CH4'], evidence={'CO2': 'C: +3.81 to +17.59'},\n",
    "             desc='Probability of CH4 increase with CO2 growth over +3.81%:')\n",
    "query_report(infer, variables=['CH4'], evidence={'CO2': 'A: -10.20 to -0.79'},\n",
    "             desc='Probability of CH4 increase with CO2 growth under -0.79%:')\n",
    "query_report(infer, variables=['CH4'],\n",
    "             desc='Probability of CH4 increase with no given evidence:')\n",
    "query_report(infer, variables=['N2O'], evidence={'CO2': 'C: +3.81 to +17.59'},\n",
    "             desc='Probability of N2O increase with CO2 growth over +3.81%:')\n",
    "query_report(infer, variables=['N2O'], evidence={'CO2': 'A: -10.20 to -0.79'},\n",
    "             desc='Probability of N2O increase with CO2 growth under -0.79%:')\n",
    "query_report(infer, variables=['N2O'],\n",
    "             desc='Probability of N2O increase with no given evidence:')\n",
    "query_report(infer, variables=['FFEC', 'REC'],\n",
    "             desc='Joint probability of fossil fuel energy consumption and renewable energy consumption:')\n",
    "query_report(infer, variables=['CO2'], evidence={'FFEC': 'A: -2.72 to -0.40', 'REC': 'C: +11.51 to +23.95'},\n",
    "             desc='Probability of CO2 increase with:\\n - fossil fuel energy consumption growth under -0.40%\\n - renewable energy consumption growth over +11.51%')\n",
    "query_report(infer, variables=['CH4'], evidence={'FFEC': 'A: -2.72 to -0.40', 'REC': 'C: +11.51 to +23.95'},\n",
    "             desc='Probability of CH4 increase with:\\n - fossil fuel energy consumption growth under -0.40%\\n - renewable energy consumption growth over +11.51%')\n",
    "query_report(infer, variables=['N2O'], evidence={'FFEC': 'A: -2.72 to -0.40', 'REC': 'C: +11.51 to +23.95'},\n",
    "             desc='Probability of N2O increase with:\\n - fossil fuel energy consumption growth under -0.40%\\n - renewable energy consumption growth over +11.51%')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can get the following **outcomes** from the queries on the modelled Bayesian network:\n",
    "\n",
    "- **Energy consumption vs Population, Urbanization, GDP**: the increase of gases diffusion is more clearly proportional to energy consumption growth rather than population, urbanization or GDP per capita growth. This result can be a symptom that some important casual factors of the energy consumption growth strictly correlated with greenhouse gases diffusion, such as industrialization, are not represented into the network.\n",
    "- <b>N<sub>2</sub>O vs CH<sub>4</sub></b>: N<sub>2</sub>O growth trends almost resemble the ones of CO<sub>2</sub>, whereas the CH<sub>4</sub> growth seems very likely to decrease regardless of the evidence. This is unlikely to be the real situation, and the probability query of CH<sub>4</sub> without given evidence proves it: the lower tier 'A' is much more likely than the others, and that is a consequence of data sparsity. The other 2 tiers of CH<sub>4</sub> are underrepresented. That is not the case of N<sub>2</sub>O, whose tiers are more balanced.\n",
    "- **Fossil fuel vs Renewable**: finally and most importantly, the output probabilites of the last queries suggest that the reduction of fossil fuel energy consumption and the increase of renewable energy consumption are really effective strategies to minimize greenhouse gases emissions, hence it is really important to use sustainable energies."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## References\n",
    "<a name=\"first\">[1]</a> [*U.S. Environmental Protection Agency - Greenhouse Gas Emissions*](https://www.epa.gov/ghgemissions/overview-greenhouse-gases)\n",
    "\n",
    "<a name=\"second\">[2]</a> [*Didem Cinar, Gulgun Kayakutlu - Scenario analysis using Bayesian networks: A case study in energy sector*](https://www.sciencedirect.com/science/article/pii/S0950705110000110)\n",
    "\n",
    "<a name=\"third\">[3]</a> [*World Bank Open Data*](https://data.worldbank.org/indicator)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
